network-transport: Network abstraction layer

[ bsd3, library, network ] [ Propose Tags ]

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

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Versions [RSS] 0.2.0, 0.2.0.1, 0.2.0.2, 0.3.0, 0.3.0.1, 0.4.0.0, 0.4.1.0, 0.4.2.0, 0.4.3.0, 0.4.3.1, 0.4.4.0, 0.5, 0.5.1, 0.5.2, 0.5.3, 0.5.4, 0.5.5, 0.5.6
Change log ChangeLog
Dependencies base (>=4.6 && <5), binary (>=0.5 && <0.9), bytestring (>=0.9 && <0.13), deepseq (>=1.0 && <1.6), ghc-prim (>=0.2 && <0.4), hashable (>=1.2.0.5 && <1.5), transformers (>=0.2 && <0.7) [details]
License BSD-3-Clause
Copyright Well-Typed LLP
Author Duncan Coutts, Nicolas Wu, Edsko de Vries
Maintainer Facundo Domínguez <facundo.dominguez@tweag.io>
Revised Revision 1 made by Bodigrim at 2023-09-08T20:21:04Z
Category Network
Home page http://haskell-distributed.github.com
Bug tracker https://github.com/haskell-distributed/network-transport/issues
Source repo head: git clone https://github.com/haskell-distributed/network-transport
Uploaded by FacundoDominguez at 2022-08-30T16:06:59Z
Distributions LTSHaskell:0.5.6, NixOS:0.5.6, Stackage:0.5.6
Reverse Dependencies 22 direct, 18 indirect [details]
Downloads 23314 total (70 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2022-08-30 [all 1 reports]