@hackage network-transport0.5.8

Network abstraction layer

Network.Transport is a Network Abstraction Layer which provides the following high-level concepts: . * Nodes in the network are represented by EndPoints. 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 EndPoints and connections cannot. . * Connections between EndPoints 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, EndPoints are notified of other Events 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-*).