xconn 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.rspec +3 -0
- data/.rubocop.yml +29 -0
- data/CHANGELOG.md +5 -0
- data/LICENSE +22 -0
- data/Makefile +9 -0
- data/README.md +2 -0
- data/Rakefile +14 -0
- data/bin/xconn +79 -0
- data/docs/index.md +7 -0
- data/docs/installation.md +11 -0
- data/example/sample/example.rb +23 -0
- data/example/sample/included_app.rb +12 -0
- data/lib/tasks/tasks.rake +24 -0
- data/lib/wamp/app.rb +39 -0
- data/lib/wamp/connection/session.rb +35 -0
- data/lib/wamp/connection/stream.rb +68 -0
- data/lib/wamp/connection/websocket_client.rb +137 -0
- data/lib/wamp/connection/websocket_connection.rb +52 -0
- data/lib/wamp/manager/base.rb +41 -0
- data/lib/wamp/manager/connection.rb +32 -0
- data/lib/wamp/manager/event/abort.rb +21 -0
- data/lib/wamp/manager/event/authenticate.rb +14 -0
- data/lib/wamp/manager/event/base.rb +41 -0
- data/lib/wamp/manager/event/call.rb +40 -0
- data/lib/wamp/manager/event/challenge.rb +26 -0
- data/lib/wamp/manager/event/error.rb +30 -0
- data/lib/wamp/manager/event/event.rb +20 -0
- data/lib/wamp/manager/event/goodbye.rb +18 -0
- data/lib/wamp/manager/event/hello.rb +38 -0
- data/lib/wamp/manager/event/invocation.rb +24 -0
- data/lib/wamp/manager/event/publish.rb +22 -0
- data/lib/wamp/manager/event/published.rb +13 -0
- data/lib/wamp/manager/event/register.rb +30 -0
- data/lib/wamp/manager/event/registered.rb +37 -0
- data/lib/wamp/manager/event/result.rb +13 -0
- data/lib/wamp/manager/event/subscribe.rb +39 -0
- data/lib/wamp/manager/event/subscribed.rb +26 -0
- data/lib/wamp/manager/event/unregister.rb +19 -0
- data/lib/wamp/manager/event/unregistered.rb +13 -0
- data/lib/wamp/manager/event/unsubscribe.rb +29 -0
- data/lib/wamp/manager/event/unsubscribed.rb +13 -0
- data/lib/wamp/manager/event/welcome.rb +21 -0
- data/lib/wamp/manager/event/yield.rb +13 -0
- data/lib/wamp/manager/event.rb +60 -0
- data/lib/wamp/manager/hello_event.rb +263 -0
- data/lib/wamp/manager/session.rb +91 -0
- data/lib/wamp/manager/subscription.rb +38 -0
- data/lib/wamp/manager.rb +12 -0
- data/lib/wamp/message_handler/api.rb +67 -0
- data/lib/wamp/message_handler/base.rb +65 -0
- data/lib/wamp/message_handler/call.rb +14 -0
- data/lib/wamp/message_handler/challenge.rb +12 -0
- data/lib/wamp/message_handler/error.rb +18 -0
- data/lib/wamp/message_handler/event.rb +18 -0
- data/lib/wamp/message_handler/goodbye.rb +19 -0
- data/lib/wamp/message_handler/hello.rb +18 -0
- data/lib/wamp/message_handler/invocation.rb +35 -0
- data/lib/wamp/message_handler/publish.rb +14 -0
- data/lib/wamp/message_handler/published.rb +18 -0
- data/lib/wamp/message_handler/register.rb +14 -0
- data/lib/wamp/message_handler/registered.rb +30 -0
- data/lib/wamp/message_handler/result.rb +17 -0
- data/lib/wamp/message_handler/subscribe.rb +14 -0
- data/lib/wamp/message_handler/subscribed.rb +30 -0
- data/lib/wamp/message_handler/unregister.rb +14 -0
- data/lib/wamp/message_handler/unregistered.rb +32 -0
- data/lib/wamp/message_handler/unsubscribe.rb +14 -0
- data/lib/wamp/message_handler/unsubscribed.rb +33 -0
- data/lib/wamp/message_handler/welcome.rb +12 -0
- data/lib/wamp/message_handler.rb +75 -0
- data/lib/wamp/router/base.rb +45 -0
- data/lib/wamp/router/client.rb +55 -0
- data/lib/wamp/router/connection.rb +150 -0
- data/lib/wamp/router/realm.rb +92 -0
- data/lib/wamp/router/server.rb +83 -0
- data/lib/wamp/router.rb +12 -0
- data/lib/wamp/serializer/cbor.rb +18 -0
- data/lib/wamp/serializer/json.rb +18 -0
- data/lib/wamp/serializer/message_pack.rb +18 -0
- data/lib/wamp/serializer.rb +5 -0
- data/lib/wamp/type/error.rb +24 -0
- data/lib/wamp/type/event.rb +16 -0
- data/lib/wamp/type/invocation.rb +16 -0
- data/lib/wamp/type/publication.rb +14 -0
- data/lib/wamp/type/registration.rb +14 -0
- data/lib/wamp/type/result.rb +16 -0
- data/lib/wamp/type/subscription.rb +14 -0
- data/lib/wamp/type/success.rb +8 -0
- data/lib/wamp/type.rb +16 -0
- data/lib/wamp/version.rb +5 -0
- data/lib/wamp.rb +15 -0
- data/mkdocs.yml +67 -0
- data/sig/wamp/serializer/json.rbs +10 -0
- data/sig/wamp.rbs +11 -0
- data/wamp.gemspec +40 -0
- metadata +223 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "delegate"
|
|
4
|
+
|
|
5
|
+
module Wamp
|
|
6
|
+
module Manager
|
|
7
|
+
# no:doc
|
|
8
|
+
module Event
|
|
9
|
+
# Base Class for Listening and Emitting events
|
|
10
|
+
# Each event should base as parent class
|
|
11
|
+
class Base < SimpleDelegator
|
|
12
|
+
attr_reader :session
|
|
13
|
+
|
|
14
|
+
def initialize(message, session)
|
|
15
|
+
super(message)
|
|
16
|
+
@session = session
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def emit_event(message)
|
|
20
|
+
session.emit(emit_event_name, message)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def transmit
|
|
24
|
+
session.transmit(payload)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def listen_event_name
|
|
28
|
+
"request_#{request_id}"
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def emit_event_name
|
|
32
|
+
"request_#{request_id}"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def error?
|
|
36
|
+
false
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "base"
|
|
4
|
+
|
|
5
|
+
module Wamp
|
|
6
|
+
module Manager
|
|
7
|
+
module Event
|
|
8
|
+
# Call Message Event
|
|
9
|
+
class Call < Base
|
|
10
|
+
def add_event_listener(&block) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
|
11
|
+
on_progress = options.delete(:on_progress)
|
|
12
|
+
options.merge!(receive_progress: true) if on_progress
|
|
13
|
+
|
|
14
|
+
session.on(listen_event_name) do |result, error|
|
|
15
|
+
if error
|
|
16
|
+
block&.call(nil, error)
|
|
17
|
+
elsif result && result.details["progress"]
|
|
18
|
+
on_progress.call(result)
|
|
19
|
+
else
|
|
20
|
+
session.off(listen_event_name)
|
|
21
|
+
block&.call(result, nil)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
session.transmit(payload)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def emit_event(message)
|
|
28
|
+
manager = Wamp::Router::Registrations.invoke(message, session)
|
|
29
|
+
return manager.transmit if manager.error?
|
|
30
|
+
|
|
31
|
+
# Invocation Manager Receives Yield Message
|
|
32
|
+
manager.add_event_listener do |yield_msg|
|
|
33
|
+
result = Message::Result.new(message.request_id, {}, *yield_msg.args, **yield_msg.kwargs)
|
|
34
|
+
session.transmit(result.payload)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "base"
|
|
4
|
+
require "openssl"
|
|
5
|
+
|
|
6
|
+
module Wamp
|
|
7
|
+
module Manager
|
|
8
|
+
module Event
|
|
9
|
+
# Welcome Message Event
|
|
10
|
+
class Challenge < Base
|
|
11
|
+
def emit_event_name
|
|
12
|
+
:challenge
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def emit_event(challenge)
|
|
16
|
+
session.emit(emit_event_name, challenge)
|
|
17
|
+
send_authenticate(session.authenticate(challenge))
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def send_authenticate(authenticate)
|
|
21
|
+
session.transmit(authenticate.payload)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "base"
|
|
4
|
+
|
|
5
|
+
module Wamp
|
|
6
|
+
module Manager
|
|
7
|
+
module Event
|
|
8
|
+
# Welcome Message Event
|
|
9
|
+
class Error < Base
|
|
10
|
+
def emit_event_name
|
|
11
|
+
"request_#{request_id}"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def emit_event(message)
|
|
15
|
+
session.emit(emit_event_name, nil, message)
|
|
16
|
+
|
|
17
|
+
begin
|
|
18
|
+
raise message.error if message.error
|
|
19
|
+
rescue StandardError => e
|
|
20
|
+
puts "Error: #{e.message}"
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def error?
|
|
25
|
+
true
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "base"
|
|
4
|
+
|
|
5
|
+
module Wamp
|
|
6
|
+
module Manager
|
|
7
|
+
module Event
|
|
8
|
+
# Event Message Event
|
|
9
|
+
class Event < Base
|
|
10
|
+
def emit_event_name
|
|
11
|
+
"event_#{subscription_id}"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def emit_event(message)
|
|
15
|
+
session.emit(emit_event_name, message)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "abort"
|
|
4
|
+
|
|
5
|
+
module Wamp
|
|
6
|
+
module Manager
|
|
7
|
+
module Event
|
|
8
|
+
# Abort Message Event
|
|
9
|
+
class Goodbye < Abort
|
|
10
|
+
def emit_event(_message)
|
|
11
|
+
reply = Message::Goodbye.new({}, "wamp.close.goodbye_and_out")
|
|
12
|
+
session.transmit(reply.payload)
|
|
13
|
+
super
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "base"
|
|
4
|
+
require_relative "../../router"
|
|
5
|
+
|
|
6
|
+
module Wamp
|
|
7
|
+
module Manager
|
|
8
|
+
module Event
|
|
9
|
+
# Hello Message Event
|
|
10
|
+
class Hello < Base
|
|
11
|
+
def add_event_listener
|
|
12
|
+
session.transmit(payload)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def emit_event(hello)
|
|
16
|
+
session.emit(:authenticate, hello) # handle second hello message
|
|
17
|
+
auth_session = Wamp::Router::Session::Base.new(hello)
|
|
18
|
+
message = update_session_id_and_return(auth_session.handle_auth)
|
|
19
|
+
session.transmit(message.payload)
|
|
20
|
+
|
|
21
|
+
session.on(:authenticate) do |authenticate|
|
|
22
|
+
welcome_or_error = update_session_id_and_return(auth_session.authenticate(authenticate))
|
|
23
|
+
session.transmit(welcome_or_error.payload)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def update_session_id_and_return(message)
|
|
28
|
+
session.session_id = message.session_id if message.respond_to?(:session_id) # welcome message
|
|
29
|
+
message
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def listen_event_name
|
|
33
|
+
:join
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "base"
|
|
4
|
+
|
|
5
|
+
module Wamp
|
|
6
|
+
module Manager
|
|
7
|
+
module Event
|
|
8
|
+
# Unregistered Message Event
|
|
9
|
+
class Invocation < Base
|
|
10
|
+
def add_event_listener(&callback)
|
|
11
|
+
session.on(listen_event_name) do |yield_msg|
|
|
12
|
+
session.off(listen_event_name)
|
|
13
|
+
callback.call(yield_msg)
|
|
14
|
+
end
|
|
15
|
+
transmit
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def emit_event_name
|
|
19
|
+
"registration_#{registration_id}"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "base"
|
|
4
|
+
|
|
5
|
+
module Wamp
|
|
6
|
+
module Manager
|
|
7
|
+
module Event
|
|
8
|
+
# Publish Message Event
|
|
9
|
+
class Publish < Base
|
|
10
|
+
def add_event_listener(&block)
|
|
11
|
+
session.transmit(payload)
|
|
12
|
+
return unless block_given?
|
|
13
|
+
|
|
14
|
+
session.on(listen_event_name) do |publication|
|
|
15
|
+
session.off(listen_event_name)
|
|
16
|
+
block.call(publication, nil)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "registered"
|
|
4
|
+
|
|
5
|
+
module Wamp
|
|
6
|
+
module Manager
|
|
7
|
+
module Event
|
|
8
|
+
# Register Message Event
|
|
9
|
+
class Register < Base
|
|
10
|
+
def add_event_listener(handler, &block)
|
|
11
|
+
session.transmit(payload)
|
|
12
|
+
session.on(listen_event_name) do |registered, error|
|
|
13
|
+
session.off(listen_event_name)
|
|
14
|
+
block&.call(registered, error)
|
|
15
|
+
|
|
16
|
+
unless error
|
|
17
|
+
manager = Registered.new(registered, session)
|
|
18
|
+
manager.add_event_listener(handler)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def emit_event(message)
|
|
24
|
+
msg = Wamp::Router::Registrations.register(message, session)
|
|
25
|
+
session.transmit(msg.payload)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "base"
|
|
4
|
+
|
|
5
|
+
module Wamp
|
|
6
|
+
module Manager
|
|
7
|
+
module Event
|
|
8
|
+
# Registered Message Event
|
|
9
|
+
class Registered < Base
|
|
10
|
+
# Adding listener for invocation message
|
|
11
|
+
def listen_event_name
|
|
12
|
+
"registration_#{registration_id}"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def add_event_listener(handler)
|
|
16
|
+
session.on(listen_event_name) do |invocation|
|
|
17
|
+
details = {}
|
|
18
|
+
details = { details: yield_method(invocation) } if invocation.details["receive_progress"]
|
|
19
|
+
result = handler.call(*invocation.args, **invocation.kwargs, **details)
|
|
20
|
+
message = Message::Yield.new(invocation.request_id, {}, result)
|
|
21
|
+
session.transmit(message.payload)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def yield_method(invocation)
|
|
26
|
+
klass = Struct.new(:invocation, :session) do
|
|
27
|
+
def progress(*args, **kwargs)
|
|
28
|
+
message = Message::Yield.new(invocation.request_id, { progress: true }, *args, **kwargs)
|
|
29
|
+
session.transmit(message.payload)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
klass.new(invocation, session)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "base"
|
|
4
|
+
require_relative "subscribed"
|
|
5
|
+
|
|
6
|
+
module Wamp
|
|
7
|
+
module Manager
|
|
8
|
+
module Event
|
|
9
|
+
# Subscribe Message Event
|
|
10
|
+
class Subscribe < Base
|
|
11
|
+
def subscription
|
|
12
|
+
@subscription ||= Subscription.new(__getobj__, session)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def add_event_listener(listener, &block)
|
|
16
|
+
session.on(listen_event_name) do |subscribed, error|
|
|
17
|
+
subscription.subscription_id = subscribed.subscription_id if subscribed
|
|
18
|
+
|
|
19
|
+
session.off(listen_event_name)
|
|
20
|
+
block.call(subscribed, error) if block_given?
|
|
21
|
+
add_subscribed_event_listner(subscribed, listener)
|
|
22
|
+
end
|
|
23
|
+
session.transmit(payload)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def listen_event_name
|
|
27
|
+
"request_#{request_id}"
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
|
|
32
|
+
def add_subscribed_event_listner(message, listener)
|
|
33
|
+
manager = Subscribed.new(message, session)
|
|
34
|
+
manager.add_event_listener(listener)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "base"
|
|
4
|
+
|
|
5
|
+
module Wamp
|
|
6
|
+
module Manager
|
|
7
|
+
module Event
|
|
8
|
+
# Subscribed Message Event
|
|
9
|
+
class Subscribed < Base
|
|
10
|
+
def add_event_listener(listener)
|
|
11
|
+
session.on(listen_event_name) do |event|
|
|
12
|
+
listener.call(*event.args, **event.kwargs)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def emit_event_name
|
|
17
|
+
"request_#{request_id}"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def listen_event_name
|
|
21
|
+
"event_#{subscription_id}"
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "base"
|
|
4
|
+
|
|
5
|
+
module Wamp
|
|
6
|
+
module Manager
|
|
7
|
+
module Event
|
|
8
|
+
# Unregister Message Event
|
|
9
|
+
class Unregister < Base
|
|
10
|
+
def add_event_listener(&block)
|
|
11
|
+
session.transmit(payload)
|
|
12
|
+
session.on(listen_event_name) do |unregistered, error|
|
|
13
|
+
block&.call(unregistered, error)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "base"
|
|
4
|
+
|
|
5
|
+
module Wamp
|
|
6
|
+
module Manager
|
|
7
|
+
module Event
|
|
8
|
+
# Unsubscribe Message Event
|
|
9
|
+
class Unsubscribe < Base
|
|
10
|
+
def add_event_listener(handler)
|
|
11
|
+
session.on(listen_event_name) do |unsubscribed, error|
|
|
12
|
+
session.off(listen_event_name)
|
|
13
|
+
handler&.call(unsubscribed, error)
|
|
14
|
+
remove_event_listening
|
|
15
|
+
end
|
|
16
|
+
session.transmit(payload)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def remove_event_listening
|
|
20
|
+
session.off(clear_event_name)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def clear_event_name
|
|
24
|
+
"event_#{subscription_id}"
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "base"
|
|
4
|
+
|
|
5
|
+
module Wamp
|
|
6
|
+
module Manager
|
|
7
|
+
module Event
|
|
8
|
+
# Welcome Message Event
|
|
9
|
+
class Welcome < Base
|
|
10
|
+
def emit_event_name
|
|
11
|
+
:join
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def emit_event(welcome)
|
|
15
|
+
session.session_id = welcome.session_id
|
|
16
|
+
session.emit(emit_event_name, session)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "event/hello"
|
|
4
|
+
require_relative "event/welcome"
|
|
5
|
+
require_relative "event/abort"
|
|
6
|
+
require_relative "event/challenge"
|
|
7
|
+
require_relative "event/authenticate"
|
|
8
|
+
require_relative "event/goodbye"
|
|
9
|
+
|
|
10
|
+
require_relative "event/error"
|
|
11
|
+
|
|
12
|
+
require_relative "event/subscribe"
|
|
13
|
+
require_relative "event/subscribed"
|
|
14
|
+
require_relative "event/unsubscribe"
|
|
15
|
+
require_relative "event/unsubscribed"
|
|
16
|
+
require_relative "event/publish"
|
|
17
|
+
require_relative "event/published"
|
|
18
|
+
require_relative "event/event"
|
|
19
|
+
|
|
20
|
+
require_relative "event/call"
|
|
21
|
+
require_relative "event/result"
|
|
22
|
+
|
|
23
|
+
require_relative "event/register"
|
|
24
|
+
require_relative "event/registered"
|
|
25
|
+
|
|
26
|
+
require_relative "event/unregister"
|
|
27
|
+
require_relative "event/unregistered"
|
|
28
|
+
|
|
29
|
+
require_relative "event/invocation"
|
|
30
|
+
require_relative "event/yield"
|
|
31
|
+
|
|
32
|
+
module Wamp
|
|
33
|
+
module Manager
|
|
34
|
+
# handles creating correct event managers
|
|
35
|
+
module Event
|
|
36
|
+
# methods responsbile for instantiating correct event
|
|
37
|
+
module ClassMethods
|
|
38
|
+
def resolve(message, session)
|
|
39
|
+
klass_name = demodulize(message.class.name)
|
|
40
|
+
klass = constantize("Wamp::Manager::Event::#{klass_name}")
|
|
41
|
+
klass.new(message, session)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def demodulize(path)
|
|
45
|
+
path = path.to_s
|
|
46
|
+
if i = path.rindex("::") # rubocop:disable Lint/AssignmentInCondition
|
|
47
|
+
path[(i + 2), path.length]
|
|
48
|
+
else
|
|
49
|
+
path
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def constantize(camel_cased_word)
|
|
54
|
+
Object.const_get(camel_cased_word)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
extend ClassMethods
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|