Class: Cocaine::Channel
Instance Method Summary collapse
- #callback(&block) ⇒ Object
- #close ⇒ Object
- #collect ⇒ Object
- #errback(&block) ⇒ Object
- #error(err) ⇒ Object
-
#initialize ⇒ Channel
constructor
A new instance of Channel.
- #trigger(chunk) ⇒ Object
Constructor Details
#initialize ⇒ Channel
Returns a new instance of Channel.
7 8 9 10 11 12 13 14 15 16 |
# File 'lib/cocaine/asio/channel.rb', line 7 def initialize @state = :opened @pending = [] @errors = [] @callbacks = [] @errbacks = [] @collector = nil end |
Instance Method Details
#callback(&block) ⇒ Object
18 19 20 21 |
# File 'lib/cocaine/asio/channel.rb', line 18 def callback(&block) register_callback @callbacks, @pending, block self end |
#close ⇒ Object
36 37 38 39 |
# File 'lib/cocaine/asio/channel.rb', line 36 def close @state = :closed check_and_trigger_collector end |
#collect ⇒ Object
41 42 43 44 45 |
# File 'lib/cocaine/asio/channel.rb', line 41 def collect raise IllegalStateError if @state == :closed raise IllegalStateError.new 'only one collector can be bound to the channel' if @collector @collector ||= EM::DefaultDeferrable.new end |
#errback(&block) ⇒ Object
23 24 25 26 |
# File 'lib/cocaine/asio/channel.rb', line 23 def errback(&block) register_callback @errbacks, @errors, block self end |
#error(err) ⇒ Object
32 33 34 |
# File 'lib/cocaine/asio/channel.rb', line 32 def error(err) do_trigger @errbacks, @errors, err end |
#trigger(chunk) ⇒ Object
28 29 30 |
# File 'lib/cocaine/asio/channel.rb', line 28 def trigger(chunk) do_trigger @callbacks, @pending, chunk end |