Class: Prosody::EventHandler

Inherits:
Object
  • Object
show all
Extended by:
ErrorClassification
Defined in:
lib/prosody/handler.rb,
sig/handler.rbs

Overview

Abstract base class for handling events from Prosody. Subclasses must implement all three handler methods.

Constant Summary collapse

HANDLER_METHODS =
%i[on_message on_excise on_timer].freeze

Class Method Summary collapse

Instance Method Summary collapse

Methods included from ErrorClassification

permanent, transient, wrap_errors

Class Method Details

.validate_handler!(handler) ⇒ void

This method returns an undefined value.



163
164
165
166
167
168
169
# File 'lib/prosody/handler.rb', line 163

def self.validate_handler!(handler)
  owners = handler.class.ancestors.take_while { |owner| owner != self }

  HANDLER_METHODS.each do |name|
    validate_method!(handler, owners, name)
  end
end

Instance Method Details

#on_excise(context, message) ⇒ Response

Process an excise record.

Parameters:

Returns:

  • (Response)


219
220
221
# File 'lib/prosody/handler.rb', line 219

def on_excise(context, message)
  raise NotImplementedError, "Subclasses must implement #on_excise"
end

#on_message(context, message) ⇒ Response

Process a single message received from Prosody. This method must be implemented by subclasses to define custom message handling logic.

Parameters:

  • context

    the message context containing metadata and control capabilities

  • message

    the message content with payload and metadata

Returns:

  • (Response)

Raises:

  • (NotImplementedError)

    if not overridden by subclass



209
210
211
# File 'lib/prosody/handler.rb', line 209

def on_message(context, message)
  raise NotImplementedError, "Subclasses must implement #on_message"
end

#on_timer(context, timer) ⇒ void

This method returns an undefined value.

Process a timer that has fired. This method is called when a previously scheduled timer fires. This method must be implemented by subclasses to define custom timer handling logic.

Parameters:

  • context

    the timer context containing metadata and control capabilities

  • timer

    the timer object with key and time information

Raises:

  • (NotImplementedError)

    if not overridden by subclass



230
231
232
# File 'lib/prosody/handler.rb', line 230

def on_timer(context, timer)
  raise NotImplementedError, "Subclasses must implement #on_timer"
end