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