Network abstraction layer.
Network.Transport
is a Network Abstraction Layer which provides the following high-level concepts: . * Nodes in the network are represented by EndPoint
s. These are heavyweight stateful objects. . * Each EndPoint
has an EndPointAddress
. . * Connections can be established from one EndPoint
to another using the EndPointAddress
of the remote end. . * The EndPointAddress
can be serialised and sent over the network, whereas EndPoint
s and connections cannot. . * Connections between EndPoint
s are unidirectional and lightweight. . * Outgoing messages are sent via a Connection
object that represents the sending end of the connection. . * Incoming messages for all of the incoming connections on an EndPoint
are collected via a shared receive queue. . * In addition to incoming messages, EndPoint
s are notified of other Event
s such as new connections or broken connections. . This design was heavily influenced by the design of the Common Communication Interface (http://www.olcf.ornl.gov/center-projects/common-communication-interface). Important design goals are: . * Connections should be lightweight: it should be no problem to create thousands of connections between endpoints. . * Error handling is explicit: every function declares as part of its type which errors it can return (no exceptions are thrown) . * Error handling is "abstract": errors that originate from implementation specific problems (such as "no more sockets" in the TCP implementation) get mapped to generic errors ("insufficient resources") at the Transport level. . This package provides the generic interface only; you will probably also want to install at least one transport implementation (network-transport-*).