name: courier version: 0.1.1.2 synopsis: A message-passing library for simplifying network applications description: Inspired by Erlang's simple message-passing facilities, courier provides roughly similar capabilities. Applications simply create one or more endpoints, bind each to a transport using a given name, then can freely send / receive messages to other endpoints just by referencing the name each endpoint bound to its transport. . A primary driver of this package's design is separation of concerns: many algorithms (especially for distributed applications) depend upon a message-passing foundation, but the algorithms are sufficiently complex that the details of how those messages are transmitted among nodes are best hidden away and solved separately from the distributed algorithm itself. With this in mind, this package aims to provide a variety of transports as well as support for common communication idioms (e.g., in order message delivery, selective out of order message delivery, synchronous RPC, etc.). . Applications may process messages in the order received at an endpoint, or use selective message reception to process the first message arriving at an endpoint that also matches a provided selection function. Through selective message reception, applications may approximate the style of an Erlang application, and enjoy better composability of message reception with multiple independent dispatch routines or message pumps. extra-source-files: changes.md examples/HelloWorld.hs tests/Tests.hs tests/TestMailbox.hs tests/TestMemory.hs tests/TestRPC.hs tests/TestTCP.hs tests/TestUDP.hs tests/TransportTestSuite.hs tests/TestUtils.hs homepage: http://github.com/hargettp/courier license: MIT license-file: LICENSE author: Phil Hargett maintainer: phil@haphazardhouse.net copyright: Copyright (c) 2013-14 Phil Hargett category: Network,Distributed Computing,Message-Oriented build-type: Simple cabal-version: >=1.8 source-repository head type: git location: https://github.com/hargettp/courier.git library hs-source-dirs: src exposed-modules: Network.Endpoints Network.Transport Network.Transport.Memory Network.Transport.Sockets Network.Transport.Sockets.TCP Network.Transport.Sockets.UDP Control.Concurrent.Mailbox Network.RPC ghc-options: -Wall -fno-state-hack -threaded -- -O2 -- -fprof-auto -- other-modules: build-depends: base >=4.6 && <5, async, bytestring, cereal, containers, hslogger, network, stm, text, uuid executable echo-server hs-source-dirs: echo main-is: EchoServer.hs ghc-options: -Wall -fno-state-hack -threaded build-depends: base >=4.6 && <5, cereal, courier executable echo-client hs-source-dirs: echo main-is: EchoClient.hs ghc-options: -Wall -fno-state-hack -threaded build-depends: base >=4.6 && <5, cereal, courier Test-Suite test-courier type: exitcode-stdio-1.0 hs-source-dirs: tests main-is: Tests.hs build-depends: -- base modules base, -- testing support HUnit, test-framework, test-framework-hunit, -- Cabal, -- 3rd party modules async, cereal, containers, directory, hslogger, network, stm, -- this project's modules courier ghc-options: -Wall -threaded -- -O2 -- -fprof-auto -- "-with-rtsopts=-N -p -s -h -i0.1"