Class: Cocaine::Channel

Inherits:
Object show all
Defined in:
lib/cocaine/asio/channel.rb

Instance Method Summary collapse

Constructor Details

#initializeChannel

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

#closeObject



36
37
38
39
# File 'lib/cocaine/asio/channel.rb', line 36

def close
  @state = :closed
  check_and_trigger_collector
end

#collectObject

Raises:



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