This module provides a TCP server that multiplexes incoming and outgoing messages from many connected peers onto a single pair of input and output channels. The socket address of the peer is used to identify the source and destination of messages.
This interface introduces a new error condition: that a message on the outgoing channel has a socket address for which no socket exists. This may occur because of incorrect usage of this library, or because a peer disconnected after the client placed a message on the outgoing channel, but before that message was sent. Currently, the server does not notify its caller of the occurrence of this error.
Runs a TCP server returning a process that outputs messages of type
a from connected peers, tagged with
SockAddr, and accepts messages of type
b for peers, again tagged with their
A multiplexed process has inputs and outputs that are tagged with the
SockAddr of the
sending or receiving peer, and carries connection start and connection end events.
The type of externally visible events that may occur for the multiplexed TCP server.
A connection to a peer with the given address is established.
|ConnectionTerminated SockAddr IOException|
A connection with the given address is terminated, due to the given exception.
|PeerMessage SockAddr a|
A message of type