network-transport: Network abstraction layer
This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.
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 anEndPointAddress
.Connections can be established from one
EndPoint
to another using theEndPointAddress
of the remote end.The
EndPointAddress
can be serialised and sent over the network, whereasEndPoint
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 otherEvent
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-*).
Properties
Versions | 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.5, 0.5.6, 0.5.7, 0.5.8 |
---|---|
Change log | ChangeLog |
Dependencies | base (>=4.6 && <5), binary (>=0.5 && <0.9), bytestring (>=0.9 && <0.12), deepseq (>=1.0 && <1.5), ghc-prim (>=0.2 && <0.4), hashable (>=1.2.0.5 && <1.5), transformers (>=0.2 && <0.6) [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> |
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-09T11:19:04Z |
Modules
- Network
- Network.Transport
- Network.Transport.Internal
- Network.Transport.Util
- Network.Transport
Downloads
- network-transport-0.5.5.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
Package maintainers
- DuncanCoutts, EdskoDeVries, FacundoDominguez, MathieuBoespflug, TimWatson, LaurentRDC, davidsd, JoelMcCracken
For package maintainers and hackage trustees