Safe Haskell | Safe-Infered |
---|
Generic building blocks for creating TCP Servers based on IterIO
- data TCPServer inp m = TCPServer {
- serverPort :: PortNumber
- serverHandler :: Inum inp inp m ()
- serverAcceptor :: Socket -> m (Iter inp m (), Onum inp m ())
- serverResultHandler :: m () -> IO ()
- runTCPServer :: (ListLikeIO inp e, ChunkData inp, Monad m) => TCPServer inp m -> IO ()
- defaultServerAcceptor :: (ListLikeIO inp e, ChunkData inp, MonadIO m) => Socket -> m (Iter inp m (), Onum inp m a)
- minimalTCPServer :: (ListLikeIO inp e, ChunkData inp) => TCPServer inp IO
- simpleHttpServer :: PortNumber -> HttpRequestHandler IO () -> TCPServer ByteString IO
- echoServer :: PortNumber -> TCPServer String IO
Documentation
TCPServer
holds all the information necessary to run
bind to a sock and respond to TCP requests from the network.
TCPServer | |
|
runTCPServer :: (ListLikeIO inp e, ChunkData inp, Monad m) => TCPServer inp m -> IO ()Source
Runs a TCPServer
in a loop.
defaultServerAcceptor :: (ListLikeIO inp e, ChunkData inp, MonadIO m) => Socket -> m (Iter inp m (), Onum inp m a)Source
This acceptor creates an Iter
and Onum
using handleI
and
enumHandle
respectively.
minimalTCPServer :: (ListLikeIO inp e, ChunkData inp) => TCPServer inp IOSource
For convenience, a TCPServer in the IO
Monad with null defaults:
- Port 0 (next availabel port)
- Handler set to
inumNop
- Acceptor set to
defaultServerAcceptor
- Request handler set to
id
(noop)
simpleHttpServer :: PortNumber -> HttpRequestHandler IO () -> TCPServer ByteString IOSource
Creates a simple HTTP server from an HTTPRequestHandler
.
echoServer :: PortNumber -> TCPServer String IOSource
Creates a TCPServer
that echoes each line from the client until EOF.