Class: Wamp::Manager::Event::Registered

Inherits:
Base
  • Object
show all
Defined in:
lib/wamp/manager/event/registered.rb

Overview

Registered Message Event

Instance Attribute Summary

Attributes inherited from Base

#session

Instance Method Summary collapse

Methods inherited from Base

#emit_event, #emit_event_name, #error?, #initialize, #transmit

Constructor Details

This class inherits a constructor from Wamp::Manager::Event::Base

Instance Method Details

#add_event_listener(handler) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/wamp/manager/event/registered.rb', line 15

def add_event_listener(handler)
  session.on(listen_event_name) do |invocation|
    details = {}
    details = { details: yield_method(invocation) } if invocation.details["receive_progress"]
    result = handler.call(*invocation.args, **invocation.kwargs, **details)
    message = Message::Yield.new(invocation.request_id, {}, result)
    session.transmit(message.payload)
  end
end

#listen_event_nameObject

Adding listener for invocation message



11
12
13
# File 'lib/wamp/manager/event/registered.rb', line 11

def listen_event_name
  "registration_#{registration_id}"
end

#yield_method(invocation) ⇒ Object



25
26
27
28
29
30
31
32
33
# File 'lib/wamp/manager/event/registered.rb', line 25

def yield_method(invocation)
  klass = Struct.new(:invocation, :session) do
    def progress(*args, **kwargs)
      message = Message::Yield.new(invocation.request_id, { progress: true }, *args, **kwargs)
      session.transmit(message.payload)
    end
  end
  klass.new(invocation, session)
end