Class: LogStash::EventDispatcher
- Inherits:
- 
      Object
      
        - Object
- LogStash::EventDispatcher
 
- Defined in:
- lib/logstash/event_dispatcher.rb
Instance Attribute Summary collapse
- 
  
    
      #emitter  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    Returns the value of attribute emitter. 
Instance Method Summary collapse
- 
  
    
      #add_listener(listener)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    This operation is slow because we use a CopyOnWriteArrayList But the majority of the addition will be done at bootstrap time So add_listener shouldn’t be called often at runtime. 
- #fire(method_name, *arguments) ⇒ Object (also: #execute)
- 
  
    
      #initialize(emitter)  ⇒ EventDispatcher 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    A new instance of EventDispatcher. 
- 
  
    
      #remove_listener(listener)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    This operation is slow because we use a ‘CopyOnWriteArrayList` as the backend, instead of a ConcurrentHashMap, but since we are mostly adding stuff and iterating the `CopyOnWriteArrayList` should provide a better performance. 
Constructor Details
#initialize(emitter) ⇒ EventDispatcher
Returns a new instance of EventDispatcher.
| 8 9 10 11 | # File 'lib/logstash/event_dispatcher.rb', line 8 def initialize(emitter) @emitter = emitter @listeners = CopyOnWriteArraySet.new end | 
Instance Attribute Details
#emitter ⇒ Object (readonly)
Returns the value of attribute emitter.
| 6 7 8 | # File 'lib/logstash/event_dispatcher.rb', line 6 def emitter @emitter end | 
Instance Method Details
#add_listener(listener) ⇒ Object
This operation is slow because we use a CopyOnWriteArrayList But the majority of the addition will be done at bootstrap time So add_listener shouldn’t be called often at runtime.
On the other hand the notification could be called really often.
| 18 19 20 | # File 'lib/logstash/event_dispatcher.rb', line 18 def add_listener(listener) @listeners.add(listener) end | 
#fire(method_name, *arguments) ⇒ Object Also known as: execute
| 31 32 33 34 35 36 37 | # File 'lib/logstash/event_dispatcher.rb', line 31 def fire(method_name, *arguments) @listeners.each do |listener| if listener.respond_to?(method_name) listener.send(method_name, emitter, *arguments) end end end | 
#remove_listener(listener) ⇒ Object
This operation is slow because we use a ‘CopyOnWriteArrayList` as the backend, instead of a ConcurrentHashMap, but since we are mostly adding stuff and iterating the `CopyOnWriteArrayList` should provide a better performance.
See note on add_listener, this method shouldn’t be called really often.
| 27 28 29 | # File 'lib/logstash/event_dispatcher.rb', line 27 def remove_listener(listener) @listeners.remove(listener) end |