Class: Wamp::Manager::Event::Call
- Defined in:
- lib/wamp/manager/event/call.rb
Overview
Call Message Event
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
-
#add_event_listener(&block) ⇒ Object
rubocop:disable Metrics/MethodLength, Metrics/AbcSize.
- #emit_event(message) ⇒ Object
Methods inherited from Base
#emit_event_name, #error?, #initialize, #listen_event_name, #transmit
Constructor Details
This class inherits a constructor from Wamp::Manager::Event::Base
Instance Method Details
#add_event_listener(&block) ⇒ Object
rubocop:disable Metrics/MethodLength, Metrics/AbcSize
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/wamp/manager/event/call.rb', line 10 def add_event_listener(&block) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize on_progress = .delete(:on_progress) .merge!(receive_progress: true) if on_progress session.on(listen_event_name) do |result, error| if error block&.call(nil, error) elsif result && result.details["progress"] on_progress.call(result) else session.off(listen_event_name) block&.call(result, nil) end end session.transmit(payload) end |
#emit_event(message) ⇒ Object
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/wamp/manager/event/call.rb', line 27 def emit_event() manager = Wamp::Router::Registrations.invoke(, session) return manager.transmit if manager.error? # Invocation Manager Receives Yield Message manager.add_event_listener do |yield_msg| result = Message::Result.new(.request_id, {}, *yield_msg.args, **yield_msg.kwargs) session.transmit(result.payload) end end |