tiny-scheduler: tiny no-brainer job scheduler

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] [Publish]

Warnings:

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


[Skip to Readme]

Properties

Versions 0.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 log None available
Dependencies async, base (>=4.7 && <5), time [details]
License BSD-3-Clause
Copyright None
Author Functor soup
Maintainer functor.soup@gmail.com
Category Web
Home page https://github.com/functor-soup/tiny-scheduler#readme
Source repo head: git clone https://github.com/functor-soup/tiny-scheduler
Uploaded by functor_soup at 2017-04-20T04:57:20Z

Modules

[Index]

Downloads

Maintainer's Corner

Package maintainers

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](https://github.com/functor-soup/tiny-simple-scheduler-example)