Class: Crimson::Agent::EventEmitter

Inherits:
Object
  • Object
show all
Defined in:
lib/crimson/agent/event_emitter.rb

Overview

Pub/sub event emitter for agent lifecycle events.

Instance Method Summary collapse

Constructor Details

#initializeEventEmitter

Returns a new instance of EventEmitter.



7
8
9
# File 'lib/crimson/agent/event_emitter.rb', line 7

def initialize
  @listeners = Hash.new { |h, k| h[k] = [] }
end

Instance Method Details

#clearvoid

This method returns an undefined value.

Remove all listeners.



40
41
42
# File 'lib/crimson/agent/event_emitter.rb', line 40

def clear
  @listeners.clear
end

#emit(event_type, **payload) ⇒ void

This method returns an undefined value.

Emit an event with keyword payload.

Parameters:

  • event_type (Symbol)
  • payload (Hash)

    forwarded as keyword arguments



32
33
34
35
36
# File 'lib/crimson/agent/event_emitter.rb', line 32

def emit(event_type, **payload)
  @listeners[event_type].each do |handler|
    handler.call(event_type, **payload)
  end
end

#listener_count(event_type = nil) ⇒ Integer

Count listeners, optionally filtered by event type.

Parameters:

  • event_type (Symbol, nil) (defaults to: nil)

Returns:

  • (Integer)


47
48
49
50
51
52
53
# File 'lib/crimson/agent/event_emitter.rb', line 47

def listener_count(event_type = nil)
  if event_type
    @listeners[event_type].size
  else
    @listeners.values.sum(&:size)
  end
end

#off(event_type, handler) ⇒ void

This method returns an undefined value.

Remove a previously registered handler.

Parameters:

  • event_type (Symbol)
  • handler (Proc)


24
25
26
# File 'lib/crimson/agent/event_emitter.rb', line 24

def off(event_type, handler)
  @listeners[event_type].delete(handler)
end

#on(event_type) { ... } ⇒ Proc

Register a handler for an event type.

Parameters:

  • event_type (Symbol)

Yields:

  • handler block

Returns:

  • (Proc)

    the handler



15
16
17
18
# File 'lib/crimson/agent/event_emitter.rb', line 15

def on(event_type, &handler)
  @listeners[event_type] << handler
  handler
end