<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
	<herd>haskell</herd>
	<maintainer>
		<email>haskell@gentoo.org</email>
	</maintainer>
	<longdescription>
		&quot;Network.Transport&quot; is a Network Abstraction Layer which provides
		the following high-level concepts:
		
		* Nodes in the network are represented by &#39;EndPoint&#39;s. These are
		heavyweight stateful objects.
		
		* Each &#39;EndPoint&#39; has an &#39;EndPointAddress&#39;.
		
		* Connections can be established from one &#39;EndPoint&#39; to another
		using the &#39;EndPointAddress&#39; of the remote end.
		
		* The &#39;EndPointAddress&#39; can be serialised and sent over the
		network, where as &#39;EndPoint&#39;s and connections cannot.
		
		* Connections between &#39;EndPoint&#39;s are unidirectional and lightweight.
		
		* Outgoing messages are sent via a &#39;Connection&#39; object that
		represents the sending end of the connection.
		
		* Incoming messages for /all/ of the incoming connections on
		an &#39;EndPoint&#39; are collected via a shared receive queue.
		
		* In addition to incoming messages, &#39;EndPoint&#39;s are notified of
		other &#39;Event&#39;s such as new connections or broken connections.
		
		This design was heavily influenced by the design of the Common
		Communication Interface
		(&lt;http://www.olcf.ornl.gov/center-projects/common-communication-interface&gt;).
		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 &quot;abstract&quot;: errors that originate from
		implementation specific problems (such as &quot;no more sockets&quot; in
		the TCP implementation) get mapped to generic errors
		(&quot;insufficient resources&quot;) 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-*).
	</longdescription>
</pkgmetadata>
