Package Info


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, where as

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

License: BSD-3-Clause



Package Version Update ID Released Package Hub Version Platforms Subpackages info GA Release 2018-08-01 15
  • AArch64
  • ghc-network-transport
  • ghc-network-transport-devel info GA Release 2018-07-31 15
  • ppc64le
  • ghc-network-transport
  • ghc-network-transport-devel info GA Release 2018-07-30 15
  • x86-64
  • ghc-network-transport
  • ghc-network-transport-devel