Class: ChatSDK::Dispatcher
- Inherits:
-
Object
- Object
- ChatSDK::Dispatcher
- Defined in:
- lib/chat_sdk/dispatcher.rb
Instance Method Summary collapse
- #dispatch(event, adapter:, adapter_name:) ⇒ Object
-
#initialize(chat:, config:, state:, registry:) ⇒ Dispatcher
constructor
A new instance of Dispatcher.
Constructor Details
#initialize(chat:, config:, state:, registry:) ⇒ Dispatcher
Returns a new instance of Dispatcher.
5 6 7 8 9 10 |
# File 'lib/chat_sdk/dispatcher.rb', line 5 def initialize(chat:, config:, state:, registry:) @chat = chat @config = config @state = state @registry = registry end |
Instance Method Details
#dispatch(event, adapter:, adapter_name:) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/chat_sdk/dispatcher.rb', line 12 def dispatch(event, adapter:, adapter_name:) ChatSDK::Instrumentation.instrument("dispatch.chat_sdk", adapter: adapter_name, event_type: event.type) do return unless dedupe(event, adapter_name) thread = build_thread(event, adapter) thread_key = thread_key_for(event, adapter_name) return unless acquire_lock(thread_key, event) begin handlers = @registry.handlers_for(event) handlers.each { |handler| execute_handler(handler, event, thread) } ensure release_lock(thread_key) end end end |