| Portability | non-portable |
|---|---|
| Stability | experimental |
| Safe Haskell | None |
Network.Mom.Patterns.Basic.Server
Description
Server side of 'Client/Server'
Server
withServer :: Context -> Service -> String -> LinkType -> OnError_ -> Conduit_ -> Control a -> IO aSource
Start a server as a background process
-
Context- The zeromq context -
Service- Service name -
String- The address to link to -
LinkType- Whether to connect to or to bind the address -
OnError_- Error handler -
Conduit_- The application-defined stream transformer; the conduit receives the request as input stream and should create the output stream that is internally sent back to the client -
Controla - Control action
A very simple example, which just sends the incoming stream
back to the client (bounce):
import Control.Monad (forever) import Control.Concurrent import Network.Mom.Patterns.Basic.Server import Network.Mom.Patterns.Types
main :: IO ()
main = withContext 1 $ \ctx ->
withServer ctx "Bouncer" "tcp://*:5555" Bind
(\_ _ _ -> return ()) -- ignore error
bounce $ \_ -> forever $ threadDelay 100000
where bounce = passThrough
Queue
withQueue :: Context -> Service -> (String, LinkType) -> (String, LinkType) -> OnError_ -> Control a -> IO aSource
A simple load balancer device to link clients and servers.
-
Context- The zeromq context -
Service- The service name of this queue - (String,
LinkType) - Address and link type, to where clients connect. Note if clients connect, the queue must bind the address! - (String,
LinkType) - Address and link type, to where servers connect. Note, again, that if servers connect, the queue must bind the address! -
OnError_- Error handler -
Controla -Controlleraction