BSD-3-Clause licensed by Duncan Coutts, Nicolas Wu, Edsko de Vries
Maintained by The Distributed Haskell team
This version can be pinned in stack with:network-transport-0.5.8@sha256:e252ea6273d5bc0afefb9b8b98e4d065f432c922f6664c753ebdb17e7297c759,4440

Module documentation for 0.5.8

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-*).