cabal-version: 3.0
Name: network-transport
Version: 0.5.8
Build-Type: Simple
License: BSD-3-Clause
License-File: LICENSE
Copyright: Well-Typed LLP
Author: Duncan Coutts, Nicolas Wu, Edsko de Vries
maintainer: The Distributed Haskell team
Stability: experimental
Homepage: https://haskell-distributed.github.io
Bug-Reports: https://github.com/haskell-distributed/distributed-process/issues
Synopsis: Network abstraction layer
Description: "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, whereas '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
(<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-*).
tested-with: GHC==8.10.7 GHC==9.0.2 GHC==9.2.8 GHC==9.4.5 GHC==9.6.4 GHC==9.8.2 GHC==9.10.1
Category: Network
extra-doc-files: ChangeLog
source-repository head
Type: git
Location: https://github.com/haskell-distributed/distributed-process
SubDir: packages/network-transport
common warnings
ghc-options: -Wall
-Wcompat
-Widentities
-Wincomplete-uni-patterns
-Wincomplete-record-updates
-Wredundant-constraints
-fhide-source-paths
-Wpartial-fields
Library
import: warnings
Build-Depends: base >= 4.14 && < 5,
binary >= 0.8 && < 0.9,
bytestring >= 0.10 && < 0.13,
hashable >= 1.2.0.5 && < 1.6,
transformers >= 0.2 && < 0.7,
deepseq >= 1.0 && < 1.6
Exposed-Modules: Network.Transport
Network.Transport.Util
Network.Transport.Internal
Other-Extensions: ForeignFunctionInterface
Default-Extensions:
RankNTypes,
ScopedTypeVariables,
DeriveDataTypeable,
GeneralizedNewtypeDeriving,
CPP
GHC-Options: -fno-warn-unused-do-bind
HS-Source-Dirs: src
Default-Language: Haskell2010
if os(win32)
extra-libraries: ws2_32