The tiny-scheduler package

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain]

Warnings:

this is a tiny library to make scheduling jobs to run at predetermined intervals, easier


[Skip to ReadMe]

Properties

Versions0.1.0.0, 0.1.1.0, 0.1.1.1, 0.1.1.2, 0.1.4.0, 0.1.4.0, 0.1.4.1, 0.1.4.2, 0.1.4.3
Change logNone available
Dependenciesasync, base (>=4.7 && <5), time [details]
LicenseBSD3
CopyrightNone
AuthorFunctor soup
Maintainerfunctor.soup@gmail.com
CategoryWeb
Home pagehttps://github.com/functor-soup/tiny-scheduler#readme
Source repositoryhead: git clone https://github.com/functor-soup/tiny-scheduler
UploadedThu Apr 20 04:57:20 UTC 2017 by functor_soup

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees


Readme for tiny-scheduler-0.1.4.0

[back to package description]

tiny-scheduler

Utility Library to run jobs concurrently at predetermined Intervals

Basic Example


import TinyScheduler.Jobs
import TinyScheduler.SubJobs
import TinyScheduler.Time
import Data.Time

intervalio :: Interval
intervalio = (Minutes 1) + (Secs 20)

jobx :: UTCTime -> Job ()
jobx x = makeJob 1234 4 intervalio x (putStrLn "Hello")

main :: IO ()
main = getCurrentTime >>= (\x ->
      execSubJobs . convertJobIntoSubJobs x $ (jobx x)) >> 
      return ()

A little more advanced Example

In the following, assuming that time starts at 0, jobs are fired at 1 minute 2 seconds, 1 minutes 4 seconds, and 2 minutes 2 seconds and 2 minutes 4 seconds from current time


import TinyScheduler.Jobs
import TinyScheduler.SubJobs
import TinyScheduler.Time
import Data.Time
import Data.Monoid

atom1 :: TimeAtom
atom1 =  makeTimeAtom 2 (Minutes 1)

atom2 :: TimeAtom
atom2 =  makeTimeAtom 2 (Secs 2)

jobx :: UTCTime -> Job ()
jobx x = timeAtomToJob 1234 (putStrLn "Hello") x (atom1 <> atom2)

main :: IO ()
main = getCurrentTime >>= (\x ->
      execSubJobs . convertJobIntoSubJobs x $ (jobx x)) >> 
      return ()

how to install

stack install tiny-scheduler

pending work

  1. Tests
  2. More documentation
  3. Haddock documentation
  4. Complete the example below

for a more advanced example (still in progress)

go to https://github.com/functor-soup/tiny-simple-scheduler-example