conduit-extra-1.1.6: Batteries included conduit: adapters for common libraries.

Safe HaskellNone
LanguageHaskell98

Data.Conduit.Network

Contents

Synopsis

Basic utilities

sourceSocket :: MonadIO m => Socket -> Producer m ByteString Source

Stream data from the socket.

This function does not automatically close the socket.

Since 0.0.0

sinkSocket :: MonadIO m => Socket -> Consumer ByteString m () Source

Stream data to the socket.

This function does not automatically close the socket.

Since 0.0.0

Simple TCP server/client interface.

data AppData :: *

Instances

HasReadWrite AppData 

appSource :: (HasReadWrite ad, MonadIO m) => ad -> Producer m ByteString Source

appSink :: (HasReadWrite ad, MonadIO m) => ad -> Consumer ByteString m () Source

appSockAddr :: AppData -> SockAddr

appLocalAddr :: AppData -> Maybe SockAddr

Server

data ServerSettings :: *

Instances

HasPort ServerSettings 
HasAfterBind ServerSettings 

runTCPServerWithHandle :: ServerSettings -> ConnectionHandle -> IO a

forkTCPServer :: MonadBaseControl IO m => ServerSettings -> (AppData -> m ()) -> m ThreadId Source

Fork a TCP Server

Will fork the runGeneralTCPServer function but will only return from this call when the server is bound to the port and accepting incoming connections. Will return the thread id of the server

Since 1.1.4

runGeneralTCPServer :: MonadBaseControl IO m => ServerSettings -> (AppData -> m ()) -> m a Source

Run a general TCP server

Same as runTCPServer, except monad can be any instance of MonadBaseControl IO.

Note that any changes to the monadic state performed by individual client handlers will be discarded. If you have mutable state you want to share among multiple handlers, you need to use some kind of mutable variables.

Since 1.1.3

Client

data ClientSettings :: *

Instances

HasPort ClientSettings 

runGeneralTCPClient :: MonadBaseControl IO m => ClientSettings -> (AppData -> m a) -> m a Source

Run a general TCP client

Same as runTCPClient, except monad can be any instance of MonadBaseControl IO.

Since 1.1.3

Getters

getPort :: HasPort a => a -> Int

getAfterBind :: HasAfterBind a => a -> Socket -> IO ()

Setters

setPort :: HasPort a => Int -> a -> a

setAfterBind :: HasAfterBind a => (Socket -> IO ()) -> a -> a

Types