The rolling-queue package
This package provides a FIFO channel for STM supporting a size limit. When this limit is reached, older entries are discarded to make way for newer entries.
The motivation for this is logging. If log entries are written to a plain TChan, the program will use a lot of memory if it produces log entries faster than they can be processed. If log entries are written to a bounded channel where writes block (e.g. the stm-chans package), the program may deadlock if the log channel fills up. With Data.STM.RollingQueue, old entries will be discarded instead.
Possible improvements (not available in Data.STM.RollingQueue) include:
Discard lower-priority entries first.
Discard every other entry, so some of the older entries will still be available.
Properties
| Version | 0.1 |
|---|---|
| Dependencies | base (4.*), stm |
| License | BSD3 |
| Copyright | Copyright (c) Joseph Adams 2012 |
| Author | Joey Adams |
| Maintainer | joeyadams3.14159@gmail.com |
| Category | Data |
| Home page | https://github.com/joeyadams/haskell-rolling-queue |
| Source repository | git clone git://github.com/joeyadams/haskell-rolling-queue.git |
| Upload date | Thu Feb 16 09:11:29 UTC 2012 |
| Uploaded by | JoeyAdams |
| Built on | ghc-7.4 |
Modules
- Data
Downloads
- rolling-queue-0.1.tar.gz (Cabal source package)
- package description (included in the package)