|
Network.SocketServer | Portability | systems with networking | Stability | experimental | Maintainer | John Goerzen <jgoerzen@complete.org> |
|
|
|
|
|
Description |
This module provides an infrastructure to simplify server design.
Written by John Goerzen, jgoerzen@complete.org
Please note: this module is designed to work with TCP, UDP, and Unix domain
sockets, but only TCP sockets have been tested to date.
This module is presently under-documented. For an example of usage, please
see the description of Network.FTP.Server.
|
|
Synopsis |
|
|
|
|
Generic Options and Types
|
|
|
Options for your server.
| Constructors | | Instances | |
|
|
|
|
|
|
Constructors | | Instances | |
|
|
|
The main handler type.
The first parameter is the socket itself.
The second is the address of the remote endpoint.
The third is the address of the local endpoint.
|
|
TCP server convenient setup
|
|
|
:: InetServerOptions | Server options
| -> HandlerT | Handler function
| -> IO () | | Convenience function to completely set up a TCP
SocketServer and handle all incoming requests.
This function is literally this:
serveTCPforever options func =
do sockserv <- setupSocketServer options
serveForever sockserv func
|
|
|
Lower-Level Processing
|
|
|
Takes some options and sets up the SocketServer. I will bind
and begin listening, but will not accept any connections itself.
|
|
|
Handle one incoming request from the given SocketServer.
|
|
|
Handle all incoming requests from the given SocketServer.
|
|
|
Close the socket server. Does not terminate active
handlers, if any.
|
|
Combinators
|
|
|
:: String | Name of logger to use
| -> Priority | Priority of logged messages
| -> HandlerT | Handler to call after logging
| -> HandlerT | Resulting handler
| Log each incoming connection using the interface in
System.Log.Logger.
Log when the incoming connection disconnects.
Also, log any failures that may occur in the child handler.
|
|
|
|
:: HandlerT | Handler to call in the new thread
| -> HandlerT | Resulting handler
| Handle each incoming connection in its own thread to
make the server multi-tasking.
|
|
|
|
:: Handle -> SockAddr -> SockAddr -> IO () | Handler to call
| -> HandlerT | | Give your handler function a Handle instead of a Socket.
The Handle will be opened with ReadWriteMode (you use one handle for both
directions of the Socket). Also, it will be initialized with LineBuffering.
Unlike other handlers, the handle will be closed when the function returns.
Therefore, if you are doing threading, you should to it before you call this
handler.
|
|
|
Produced by Haddock version 2.6.0 |