Portability | portable |
---|---|
Stability | experimental |
Safe Haskell | None |
Client side of Client/Server
Documentation
request :: Client -> Timeout -> Source -> SinkR (Maybe a) -> IO (Maybe a)Source
Request a service:
-
Client
- The client, through which the service is requested -
Timeout
- Timeout in microseconds, -1 to wait eternally. With timeout = 0, the function returns immediately withNothing
. When the timeout expires, request is abandoned. In this case, the result of the request is Nothing. -
Source
- The source of the request stream; the format of the request will probably comply with some communication protocol, as, for instance, in the majordomo pattern. -
SinkR
- The sink receiving the reply. The result of the sink is returned as the request's overall result. Note that the sink may perform different actions on the segments of the resulting stream, e.g. storing data in a database, and return the number of records received.
A 'hello world' Example:
import qualified Data.Conduit as C import qualified Data.ByteString.Char8 as B import Network.Mom.Patterns.Basic.Client import Network.Mom.Patterns.Types
main :: IO () main = withContext 1 $ \ctx -> withClient ctx "test" "tcp://localhost:5555" Connect $ \c -> do mbX <- request c (-1) src snk case mbX of Nothing -> putStrLn "No Result" Just x -> putStrLn $ "Result: " ++ x where src = C.yield (B.pack "hello world") snk = do mbX <- C.await case mbX of Nothing -> return Nothing Just x -> return $ Just $ B.unpack x