packages feed

select-0.2: select.cabal

Name:                select
Version:             0.2
Synopsis:            Give the select(2) POSIX function a simple STM interface
Homepage:            http://nonempty.org/software/haskell-select
License:             BSD3
License-file:        LICENSE
Author:              Gard Spreemann
Maintainer:          Gard Spreemann <gspreemann@gmail.com>
Copyright:           2012 Gard Spreemann
Category:            System
Build-type:          Simple
Extra-source-files:  src/System/Posix/IO/Select/select_wrapper.c src/System/Posix/IO/Select/select_wrapper.h
Cabal-version:       >=1.2
Description:         While tinkering on a project, I frequently found myself
		     having to make FFI calls to @select(2)@. This package is an attempt
		     reduce the boilerplate I needed to do that. While at it, I took the
		     opportunity to have what @select@ returns put in a 'TMVar'.
		     .
		     The package has three parts:
		     .
		     ["System.Posix.IO.Select"] just wraps @select@.
		     .
		     ["Control.Concurrent.STM.TMVarIO"] and "Control.Concurrent.MVarIO" put the
		     return value of IO actions into a 'TMVar' or an 'MVar', respectively.
		     .
		     ["Control.Concurrent.STM.RunOrElse"] defines functions that give you
		     the return value of whatever finishes first of an IO action and an STM
		     operation.
		     .
		     ["System.Posix.IO.Select.STM"] and "System.Posix.IO.Select.MVar" do the above
		     for the special case @select@.
		     .
		     /NOTE/: I feel I'm occupying prime namespace realestate with a package name
		     like select. I'll happily let myself be chased away if anybody else wants
		     to use this package name. Let me know.
		     .
		     /NOTE 2/: The vector dependency comes from me not spending time figuring out
		     how to pass lists of data to C without first turning them into vectors. It'll
		     probably disappear soon.
		     .
		     /CAVEAT/: I'm not an experienced Haskeller (as you can tell from note 2), and
		     this is my first foray into FFI in general. Use with caution.



Library
  Exposed-modules:     Control.Concurrent.MVarIO,
                       Control.Concurrent.STM.TMVarIO,
                       Control.Concurrent.STM.RunOrElse,
                       System.Posix.IO.Select,
                       System.Posix.IO.Select.STM,
                       System.Posix.IO.Select.Types,
                       System.Posix.IO.Select.MVar
  
  hs-source-dirs:      src
  Build-depends:       base >= 4 && <5, vector, stm
  
  c-sources:           src/System/Posix/IO/Select/select_wrapper.c
  cc-options:          -std=c99 -Wall -DNDEBUG