packages feed

network-transport-zeromq-0.2: network-transport-zeromq.cabal

name:                network-transport-zeromq
version:             0.2
synopsis:            ZeroMQ backend for network-transport
description:
  Implementation of the
  <http://hackage.haskell.org/package/network-transport network-transport>
  API over ZeroMQ. This provides access to the wealth of transports implemented in ZeroMQ, such as in-process, inter-process, TCP, TPIC and multicast. Furthermore, this makes it possible to encrypt and authenticate clients using ZeroMQ's security mechanisms, and increase throughput using ZeroMQ's intelligent message batching.
  .
license:             BSD3
license-file:        LICENSE
copyright:           (c) 2014, EURL Tweag
author:              Tweag I/O
maintainer:          Alexander Vershilov <alexander.vershilov@tweag.io>
category:            Network
build-type:          Simple
cabal-version:       >=1.10

Source-repository head
  Type: git
  Location: https://github.com/tweag/network-transport-zeromq

flag install-benchmarks
  description: Install benchmarks executables (default benchmarks can be triggered during build using \-\-enable-benchmarks option).
  default:     False

flag distributed-process-tests
  description: build test suites that require distributed-process to be installed
  default:     False

flag unsafe
  description: Use faster but unsafe primitives.
  default:     False

library
  build-depends:      base >=4.6 && < 4.8,
                      binary >= 0.6,
                      network-transport >= 0.3,
                      zeromq4-haskell >= 0.2,
                      async >= 2.0,
                      stm >= 2.4,
                      stm-chans >= 0.3,
                      containers >= 0.5,
                      bytestring >= 0.10,
                      transformers >= 0.3,
                      semigroups >= 0.12,
                      exceptions >= 0.3,
                      void >= 0.6,
                      random >= 1.0
  exposed-modules:    Network.Transport.ZMQ
                      Network.Transport.ZMQ.Internal
                      Network.Transport.ZMQ.Internal.Types
  hs-source-dirs:     src
  ghc-options:        -Wall
  if flag(unsafe)
    cpp-options:      -DUNSAFE_SEND
  default-extensions: DeriveGeneric
                      DeriveDataTypeable
                      OverloadedStrings
                      LambdaCase
                      ScopedTypeVariables
                      StandaloneDeriving
  other-extensions:   CPP
  default-language:   Haskell2010

Test-Suite test-zeromq
  type:               exitcode-stdio-1.0
  main-is:            TestZMQ.hs
  build-depends:      base >= 4.4 && < 5,
                      network-transport >= 0.2 && < 0.4,
                      network-transport-zeromq,
                      zeromq4-haskell >= 0.2,
                      network-transport-tests >= 0.1.0.1 && < 0.2
  ghc-options:        -Wall -threaded -rtsopts -with-rtsopts=-N -fno-warn-unused-do-bind
  hs-source-dirs:     tests
  default-language:   Haskell2010

Test-Suite test-api
  type:               exitcode-stdio-1.0
  main-is:            TestAPI.hs
  build-depends:      base >= 4.4 && < 5,
                      network-transport >= 0.2 && < 0.4,
                      network-transport-zeromq,
                      zeromq4-haskell >= 0.2,
                      tasty >= 0.7,
                      tasty-hunit >= 0.7
  ghc-options:        -Wall -threaded -rtsopts -with-rtsopts=-N -fno-warn-unused-do-bind
  hs-source-dirs:     tests
  default-language:   Haskell2010

Test-Suite test-ch-core
  Type:              exitcode-stdio-1.0
  Main-Is:           test-ch.hs
  CPP-Options:       -DTEST_SUITE_MODULE=Control.Distributed.Process.Tests.CH
  default-extensions:        CPP
  ghc-options:       -Wall -threaded -rtsopts -with-rtsopts=-N -fno-warn-unused-do-bind
  HS-Source-Dirs:    tests
  default-language:  Haskell2010
  if flag(distributed-process-tests)
    Build-Depends:   base >= 4.4 && < 5,
                     network-transport-zeromq,
                     distributed-process-tests >= 0.4,
                     network >= 2.3 && < 2.5,
                     network-transport >= 0.3 && < 0.4,
                     test-framework >= 0.6 && < 0.9,
                     containers,
                     stm,
                     stm-chans,
                     bytestring
    Buildable:       True
  else
    Buildable:       False

Test-Suite test-ch-closure
  Type:              exitcode-stdio-1.0
  Main-Is:           test-ch.hs
  CPP-Options:       -DTEST_SUITE_MODULE=Control.Distributed.Process.Tests.Closure
  default-extensions:        CPP
  ghc-options:       -Wall -threaded -rtsopts -with-rtsopts=-N -fno-warn-unused-do-bind -caf-all -auto-all
  HS-Source-Dirs:    tests
  default-language:  Haskell2010
  if flag(distributed-process-tests)
    Build-Depends:   base >= 4.4 && < 5,
                     network-transport-zeromq,
                     distributed-process-tests >= 0.4,
                     network >= 2.3 && < 2.5,
                     network-transport >= 0.3 && < 0.4,
                     test-framework >= 0.6 && < 0.9,
                     containers,
                     stm,
                     stm-chans,
                     bytestring
    Buildable:       True
  else
    Buildable:       False

Test-Suite test-ch-stat
  Type:              exitcode-stdio-1.0
  Main-Is:           test-ch.hs
  CPP-Options:       -DTEST_SUITE_MODULE=Control.Distributed.Process.Tests.Stats
  default-extensions:        CPP
  ghc-options:       -Wall -threaded -rtsopts -with-rtsopts=-N -fno-warn-unused-do-bind
  HS-Source-Dirs:    tests
  default-language:  Haskell2010
  if flag(distributed-process-tests)
    Build-Depends:   base >= 4.4 && < 5,
                     network-transport-zeromq,
                     distributed-process-tests >= 0.4,
                     network >= 2.3 && < 2.5,
                     network-transport >= 0.3 && < 0.4,
                     test-framework >= 0.6 && < 0.9,
                     containers,
                     stm,
                     stm-chans,
                     bytestring
    Buildable:       True
  else
    Buildable:       False

benchmark bench-channels-local
  type:              exitcode-stdio-1.0
  main-is:           Channels.hs
  build-depends:     base >= 4.4 && < 5,
                     network-transport-zeromq,
                     bytestring,
                     binary,
                     distributed-process,
                     criterion
  hs-source-dirs:    benchmarks
  ghc-options:       -O2 -Wall -threaded
  default-language:  Haskell2010

benchmark bench-latency-local
  type:              exitcode-stdio-1.0
  main-is:           Latency.hs
  build-depends:     base >= 4.4 && < 5,
                     network-transport-zeromq,
                     bytestring,
                     binary,
                     distributed-process,
                     criterion
  hs-source-dirs:    benchmarks
  ghc-options:       -O2 -Wall -threaded
  default-language:  Haskell2010

benchmark bench-throughput-local
  type:              exitcode-stdio-1.0
  main-is:           Throughput.hs
  build-depends:     base >= 4.4 && < 5,
                     network-transport-zeromq,
                     bytestring,
                     binary,
                     distributed-process,
                     criterion
  hs-source-dirs:    benchmarks
  ghc-options:       -O2 -Wall -threaded
  default-language:  Haskell2010
  default-extensions: BangPatterns

-- Installable benchmark executables, so as to allow passing arguments
-- to the benchmarks on the command line and hence run more complex
-- benchmarks over several hosts.

executable bench-dp-latency
  ghc-options:       -O2 -Wall
  main-is: Latency.hs
  hs-source-dirs:    benchmarks
  if flag(install-benchmarks)
    build-depends:   base >= 4.4 && < 5,
                     network-transport-zeromq,
                     bytestring,
                     binary,
                     distributed-process
    buildable:       True
  else
    buildable:       False
  default-language:  Haskell2010

executable bench-dp-throughput
  if flag(install-benchmarks)
    Build-Depends:   base >= 4.4 && < 5,
                     distributed-process,
                     network-transport-zeromq,
                     bytestring >= 0.9 && < 0.11,
                     binary >= 0.5 && < 0.8
    buildable:       True
  else
    buildable: False
  main-is:           Throughput.hs
  hs-source-dirs:    benchmarks
  ghc-options:       -Wall
  default-extensions:        BangPatterns
  default-language:  Haskell2010

executable bench-dp-channels
    if flag(install-benchmarks)
      Build-Depends:   base >= 4.4 && < 5,
                       distributed-process,
                       network-transport-zeromq,
                       bytestring >= 0.9 && < 0.11,
                       binary >= 0.5 && < 0.8
      buildable:       True
    else
      buildable: False
    main-is:           Channels.hs
    hs-source-dirs:    benchmarks
    ghc-options:       -Wall -O2 -Wall -threaded
    default-extensions: BangPatterns
    default-language:   Haskell2010