Class: EventMachine::Ssh::Callbacks::Callback

Inherits:
Object
  • Object
show all
Defined in:
lib/em-ssh/callbacks.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(obj, event, &blk) ⇒ Callback

Returns a new instance of Callback.

Raises:

  • (ArgumentError)


72
73
74
75
76
77
# File 'lib/em-ssh/callbacks.rb', line 72

def initialize(obj, event, &blk)
  raise ArgumentError.new("a block is required") unless block_given?
  @obj   = obj
  @event = event
  @block = blk
end

Instance Attribute Details

#blockObject (readonly)

The block to call when the event is fired



70
71
72
# File 'lib/em-ssh/callbacks.rb', line 70

def block
  @block
end

#eventObject (readonly)

Sybmol

the name of the event



68
69
70
# File 'lib/em-ssh/callbacks.rb', line 68

def event
  @event
end

#objObject (readonly)

The object that keeps this callback



66
67
68
# File 'lib/em-ssh/callbacks.rb', line 66

def obj
  @obj
end

Instance Method Details

#call(*args) ⇒ Object

Call the callback with optional arguments



80
81
82
# File 'lib/em-ssh/callbacks.rb', line 80

def call(*args)
  block.call(*args)
end

#cancelObject

register



90
91
92
93
94
# File 'lib/em-ssh/callbacks.rb', line 90

def cancel
  raise "#{@obj} does not have any callbacks for #{@event.inspect}" unless @obj.respond_to?(:callbacks) && @obj.callbacks.respond_to?(:[]) && @obj.callbacks[@event].respond_to?(:delete)
  @obj.callbacks[@event].delete(self)
  self
end

#registerObject

Registers the callback with the object. This is useful if you cancel the callback at one point and want to re-enable it later on.



86
87
88
# File 'lib/em-ssh/callbacks.rb', line 86

def register
  @obj.on(self)
end