Native MRI channel like object to complement github.com/methodmissing/callback/tree
methodmissing/channel
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Simple native Channel object for Ruby MRI (c) 2009 Lourens Naudé (methodmissing), James Tucker (raggi) http://github.com/methodmissing/channel This library works with Ruby 1.8 and 1.9 and is a more efficient implementation of the following Ruby code : class RubyChannel def initialize @subscribers = [] end def subscribe(&b) @subscribers << b self end def <<(o) @subscribers.each { |s| s.call(o) } end end Use cases : * In process message dispatch * Parsers and protocols with a message, error and warning channel * Facilitates decoupled notification and callback patterns Caveats : * Fixed width channel size for very thin, and fast, subscriber management Examples : counter = 0 ch = Channel.new.subscribe{|obj| counter += obj } ch << 3 ch << -2 counter #=> 1 Todo : * A deferrable mode that notifies on a background thread (pending 1.9) * More flexible notification mechanism through integration with http://github.com/methodmissing/callback/tree/master * Filters To run the test suite: rake To run the benchmarks: rake bench
About
Native MRI channel like object to complement github.com/methodmissing/callback/tree
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published