Class: MatrixSdk::EventHandlerArray

Inherits:
Hash
  • Object
show all
Defined in:
lib/matrix_sdk/extensions.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ EventHandlerArray

Returns a new instance of EventHandlerArray.



66
67
68
69
70
# File 'lib/matrix_sdk/extensions.rb', line 66

def initialize(*args)
  @reraise_exceptions = false

  super(*args)
end

Instance Attribute Details

#reraise_exceptionsObject

Returns the value of attribute reraise_exceptions.



64
65
66
# File 'lib/matrix_sdk/extensions.rb', line 64

def reraise_exceptions
  @reraise_exceptions
end

Instance Method Details

#add_handler(filter = nil, id = nil, &block) ⇒ Object



72
73
74
75
# File 'lib/matrix_sdk/extensions.rb', line 72

def add_handler(filter = nil, id = nil, &block)
  id ||= block.hash
  self[id] = { filter: filter, id: id, block: block }
end

#fire(event, filter = nil) ⇒ Object



81
82
83
84
85
86
87
88
89
90
91
# File 'lib/matrix_sdk/extensions.rb', line 81

def fire(event, filter = nil)
  reverse_each do |_k, h|
    begin
      h[:block].call(event) if event.matches?(h[:filter], filter)
    rescue StandardError => ex
      logger.error "#{ex.class.name} occurred when firing event (#{event})\n#{ex}"

      raise ex if @reraise_exceptions
    end
  end
end

#loggerObject



93
94
95
# File 'lib/matrix_sdk/extensions.rb', line 93

def logger
  @logger ||= Logging.logger[self]
end

#remove_handler(id) ⇒ Object



77
78
79
# File 'lib/matrix_sdk/extensions.rb', line 77

def remove_handler(id)
  delete id
end