packages feed

courier-0.1.0.13: courier.cabal

name:                courier
version:             0.1.0.13
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
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.TCP
                  Network.Transport.UDP
                  Control.Concurrent.Mailbox
                  Network.RPC

  ghc-options: -Wall -fno-state-hack
  other-modules:
                  Network.Transport.Sockets
                  Network.Transport.Internal
  build-depends:       base >=4.6 && <5,
                       async,
                       bytestring,
                       cereal,
                       containers,
                       hslogger,
                       network,
                       stm,
                       text,
                       uuid

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,
        stm,
        -- this project's modules
        courier

    ghc-options: -Wall -threaded