File network-transport.cabal of Package ghc-network-transport
Name: network-transport
Version: 0.4.4.0
x-revision: 1
Cabal-Version: >=1.6
Build-Type: Simple
License: BSD3
License-File: LICENSE
Copyright: Well-Typed LLP
Author: Duncan Coutts, Nicolas Wu, Edsko de Vries
Maintainer: Facundo DomÃnguez <facundo.dominguez@tweag.io>
Stability: experimental
Homepage: http://haskell-distributed.github.com
Bug-Reports: https://github.com/haskell-distributed/network-transport/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, 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
(<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==7.6.3 GHC==7.8.4 GHC==7.10.3
Category: Network
extra-source-files: ChangeLog
Source-Repository head
Type: git
Location: https://github.com/haskell-distributed/network-transport
Library
Build-Depends: base >= 4.4 && < 5,
binary >= 0.5 && < 0.9,
bytestring >= 0.9 && < 0.11,
hashable >= 1.2.0.5 && < 1.3,
transformers >= 0.2 && < 0.6,
deepseq >= 1.0 && < 1.5
if impl(ghc < 7.6)
Build-Depends: ghc-prim >= 0.2 && < 0.4
Exposed-Modules: Network.Transport,
Network.Transport.Util
Network.Transport.Internal
Extensions: ForeignFunctionInterface,
RankNTypes,
ScopedTypeVariables,
DeriveDataTypeable,
GeneralizedNewtypeDeriving,
CPP
GHC-Options: -Wall -fno-warn-unused-do-bind
HS-Source-Dirs: src
if os(win32)
extra-libraries: ws2_32