Object
Provides a simple interface to push items to a number of subscribers. The channel will schedule all operations on the main reactor thread for thread safe reactor operations.
This provides a convenient way for connections to consume messages from long running code in defer, without threading issues.
channel = EM::Channel.new
sid = channel.subscribe{ |msg| p [:got, msg] }
channel.push('hello world')
channel.unsubscribe(sid)
See examples/ex_channel.rb for a detailed example.
Receive exactly one message from the channel.
# File lib/em/channel.rb, line 43
43: def pop(*a, &b)
44: EM.schedule {
45: name = subscribe do |*args|
46: unsubscribe(name)
47: EM::Callback(*a, &b).call(*args)
48: end
49: }
50: end
Add items to the channel, which are pushed out to all subscribers.
# File lib/em/channel.rb, line 36
36: def push(*items)
37: items = items.dup
38: EM.schedule { @subs.values.each { |s| items.each { |i| s.call i } } }
39: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.