Commits

badi committed 1f2625f

include example in description

  • Participants
  • Parent commits caaa847

Comments (0)

Files changed (1)

cctools-workqueue.cabal

 
 name:                cctools-workqueue
 version:             0.1.0.0
+
 synopsis:            High-level interface to CCTools' WorkQueue library
--- description:         
+
+description:         This package provides a high-level Haskell interface to the WorkQueue library:
+                     <http://www.nd.edu/~ccl/software/workqueue/>
+                     .
+                     .
+                     Work Queue is a framework for building large
+                     master-worker applications that span many
+                     computers including clusters, clouds, and
+                     grids. Work Queue applications are written in C,
+                     Perl, or Python using a simple API that allows
+                     users to define tasks, submit them to the queue,
+                     and wait for completion. Tasks are executed by a
+                     standard worker process that can run on any
+                     available machine. Each worker calls home to the
+                     master process, arranges for data transfer, and
+                     executes the tasks. Together, the master and
+                     worker handle a wide variety of failures,
+                     allowing for dynamically scalable and robust
+                     applications.
+                     .
+                     <<http://www.nd.edu/~ccl/software/workqueue/wq-small.gif>>
+                     .
+                     .
+                     Example usage:
+                     .
+ > module Main where
+ > 
+ > import Control.Distributed.CCTools.WorkQueue
+ > 
+ > import Control.Applicative ((<$>))
+ > import qualified Data.ByteString.Char8 as BS (pack, putStrLn)
+ > import Foreign.C.String (newCStringLen)
+ > import Control.Monad (forM_)
+ > 
+ > 
+ > 
+ > mktask :: Show a => a -> IO Task
+ > mktask v = do
+ >   let script = BS.pack . unlines $ [
+ >               "t=$(echo $RANDOM % 10 | bc)"
+ >             , "sleep $t"
+ >             , "echo " ++ show v
+ >             ]
+ >   t <- task $ cmd "bash script.sh"
+ >   specifyBuffer t script (remote "script.sh") False
+ >   specifyTag    t $ show v
+ >   return t
+ > 
+ > printStats q = do
+ >   s <- getStats q
+ >   print $ map ($ s) [tasksRunning, tasksWaiting, tasksComplete]
+ > 
+ > 
+ > processResult q r = do
+ >   putStrLn $ "Got: " ++ show (tag r)
+ >   BS.putStrLn . output $ r
+ >   delete r
+ > 
+ > main = do
+ >   setDebugFlags [All]
+ >   q  <- workqueue defaultQParams
+ >   ts <- mapM mktask [1..10]
+ >   forM_ ts (submit q)
+ > 
+ >   eventLoop q (seconds 1) printStats processResult
+ > 
+ >   putStrLn "Done!"
+
+
+
+
 license:             GPL-2
 license-file:        LICENSE
 author:              Badi' Abdul-Wahid
   ghc-options:       -O3 -funbox-strict-fields
 
   if flag(warn)
-    ghc-options:     -Werror
-                     -W
+    ghc-options:     -W
                      -fwarn-duplicate-exports -fwarn-incomplete-patterns -fwarn-incomplete-uni-patterns
                      -fwarn-incomplete-record-updates -fwarn-missing-fields -fwarn-missing-signatures
                      -fwarn-name-shadowing -fwarn-tabs -fwarn-unused-imports -fwarn-unused-matches