xconn 0.1.0 → 0.1.2
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 +4 -4
- data/lib/wamp/message_handler/invocation.rb +4 -1
- data/lib/wamp/message_handler/result.rb +5 -1
- data/lib/wamp/router/connection.rb +17 -9
- data/lib/wamp/type/invocation.rb +9 -0
- data/lib/wamp/version.rb +1 -1
- data/wamp.gemspec +1 -1
- metadata +8 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 90143368352302b58d43e59a436f6317842edd21950335b698897af98261ac01
|
4
|
+
data.tar.gz: e7441cba5947a6bc6a1f4424b059b6c0c28626d01f71cc3d55d400da70d1622f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5a480c46a42e7e2da07f845645bf802a35a555fc1a49c29b3a6240b26da8d315bc898cd0db7f3efdab7098f5171f231dc097ef6bb631bfe53d34a7313183abe3
|
7
|
+
data.tar.gz: 583bd5880dcd8bd0f0e558a6f14a5de97ed1ae95381c95175bd6905b6b0f9e8bbe8a5c479a51ec1852e9a8b5bc233d033cde69f362cc8e49b30f7f607b1c0849
|
@@ -16,7 +16,10 @@ module Wamp
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def invocation_response
|
19
|
-
Type::Invocation.new(args: message.args, kwargs: message.kwargs, details: message.details)
|
19
|
+
Type::Invocation.new(args: message.args, kwargs: message.kwargs, details: message.details).tap do |invocation|
|
20
|
+
invocation.connection = connection
|
21
|
+
invocation.request_id = message.request_id
|
22
|
+
end
|
20
23
|
end
|
21
24
|
|
22
25
|
private
|
@@ -6,7 +6,11 @@ module Wamp
|
|
6
6
|
class Result < Base
|
7
7
|
def handle
|
8
8
|
validate_received_message
|
9
|
-
|
9
|
+
if message.details[:progress]
|
10
|
+
store[store_key].fetch(:handler).call(response)
|
11
|
+
else
|
12
|
+
stored_data.fetch(:handler).call(response)
|
13
|
+
end
|
10
14
|
end
|
11
15
|
|
12
16
|
def response
|
@@ -18,14 +18,15 @@ module Wamp
|
|
18
18
|
OPEN = 1
|
19
19
|
CLOSING = 2
|
20
20
|
CLOSED = 3
|
21
|
+
SUPPORTED_PROTOCOLS = ["wamp.2.msgpack", "wamp.2.cbor", "wamp.2.json"].freeze
|
21
22
|
|
22
23
|
attr_reader :socket, :session, :acceptor
|
23
24
|
|
24
|
-
def initialize(socket, &cleanup)
|
25
|
-
super()
|
25
|
+
def initialize(socket, &cleanup) # rubocop:disable Lint/MissingSuper
|
26
|
+
# super() # on_connect() does what super() does
|
26
27
|
@cleanup = cleanup
|
27
28
|
@socket = socket
|
28
|
-
@driver = WebSocket::Driver.server(self)
|
29
|
+
@driver = WebSocket::Driver.server(self, protocols: SUPPORTED_PROTOCOLS)
|
29
30
|
@driver.on(:open) { on_open(_1) }
|
30
31
|
@driver.on(:message) { on_message(_1.data) }
|
31
32
|
@driver.on(:close) { |evt| begin_close(evt.reason, evt.code) }
|
@@ -57,7 +58,7 @@ module Wamp
|
|
57
58
|
return if @ready_state == CLOSED
|
58
59
|
|
59
60
|
@ready_state = CLOSED
|
60
|
-
@driver.close
|
61
|
+
@driver.close(*@close_params)
|
61
62
|
socket.close
|
62
63
|
end
|
63
64
|
|
@@ -128,21 +129,28 @@ module Wamp
|
|
128
129
|
@driver.close(message.code, message.reason)
|
129
130
|
end
|
130
131
|
|
131
|
-
def close(
|
132
|
-
@driver.close
|
132
|
+
def close(code, reason)
|
133
|
+
@driver.close(reason, code)
|
133
134
|
end
|
134
135
|
|
135
136
|
attr_reader :serializer
|
136
137
|
|
137
|
-
def choose_serializer_from(protocols)
|
138
|
-
|
138
|
+
def choose_serializer_from(protocols) # rubocop:disable Metrics/MethodLength
|
139
|
+
common_protocols = protocols.to_s.split(",") & SUPPORTED_PROTOCOLS
|
140
|
+
protocol = common_protocols[0].to_s
|
141
|
+
|
142
|
+
@serializer = if protocol.include?("wamp.2.msgpack")
|
139
143
|
Wampproto::Serializer::Msgpack
|
140
144
|
elsif protocols.include?("wamp.2.cbor")
|
141
145
|
Wampproto::Serializer::Cbor
|
142
146
|
elsif protocols.include?("wamp.2.json")
|
143
147
|
Wampproto::Serializer::JSON
|
144
148
|
else
|
145
|
-
|
149
|
+
reason = "on_connect: protocols not supported '#{protocols}'."
|
150
|
+
code = 1006
|
151
|
+
puts reason
|
152
|
+
@close_params = [reason, code]
|
153
|
+
finalize_close
|
146
154
|
end
|
147
155
|
end
|
148
156
|
end
|
data/lib/wamp/type/invocation.rb
CHANGED
@@ -4,6 +4,7 @@ module Wamp
|
|
4
4
|
module Type
|
5
5
|
# Invocation Type
|
6
6
|
class Invocation
|
7
|
+
attr_writer :connection, :request_id
|
7
8
|
attr_reader :args, :kwargs, :details
|
8
9
|
|
9
10
|
def initialize(args: [], kwargs: {}, details: {})
|
@@ -11,6 +12,14 @@ module Wamp
|
|
11
12
|
@kwargs = kwargs
|
12
13
|
@details = details
|
13
14
|
end
|
15
|
+
|
16
|
+
def progress(result)
|
17
|
+
@connection.transmit @connection.session.send_message(response(result))
|
18
|
+
end
|
19
|
+
|
20
|
+
def response(result)
|
21
|
+
Wampproto::Message::Yield.new(@request_id, result.details, *result.args, **result.kwargs)
|
22
|
+
end
|
14
23
|
end
|
15
24
|
end
|
16
25
|
end
|
data/lib/wamp/version.rb
CHANGED
data/wamp.gemspec
CHANGED
@@ -34,7 +34,7 @@ Gem::Specification.new do |spec|
|
|
34
34
|
spec.add_dependency "ed25519", "~> 1.3"
|
35
35
|
spec.add_dependency "msgpack", "~> 1.7.2"
|
36
36
|
spec.add_dependency "nio4r", "~> 2.7"
|
37
|
-
spec.add_dependency "wampproto", "~> 0.1.
|
37
|
+
spec.add_dependency "wampproto", "~> 0.1.2"
|
38
38
|
spec.add_dependency "websocket-driver", "~> 0.7"
|
39
39
|
spec.metadata["rubygems_mfa_required"] = "true"
|
40
40
|
end
|
metadata
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xconn
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ismail Akram
|
8
|
+
autorequire:
|
8
9
|
bindir: bin
|
9
10
|
cert_chain: []
|
10
|
-
date: 2024-
|
11
|
+
date: 2024-06-04 00:00:00.000000000 Z
|
11
12
|
dependencies:
|
12
13
|
- !ruby/object:Gem::Dependency
|
13
14
|
name: cbor
|
@@ -71,14 +72,14 @@ dependencies:
|
|
71
72
|
requirements:
|
72
73
|
- - "~>"
|
73
74
|
- !ruby/object:Gem::Version
|
74
|
-
version: 0.1.
|
75
|
+
version: 0.1.2
|
75
76
|
type: :runtime
|
76
77
|
prerelease: false
|
77
78
|
version_requirements: !ruby/object:Gem::Requirement
|
78
79
|
requirements:
|
79
80
|
- - "~>"
|
80
81
|
- !ruby/object:Gem::Version
|
81
|
-
version: 0.1.
|
82
|
+
version: 0.1.2
|
82
83
|
- !ruby/object:Gem::Dependency
|
83
84
|
name: websocket-driver
|
84
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -203,6 +204,7 @@ metadata:
|
|
203
204
|
homepage_uri: https://github.com/xconnio/wamp.rb
|
204
205
|
source_code_uri: https://github.com/xconnio/wamp.rb
|
205
206
|
rubygems_mfa_required: 'true'
|
207
|
+
post_install_message:
|
206
208
|
rdoc_options: []
|
207
209
|
require_paths:
|
208
210
|
- lib
|
@@ -217,7 +219,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
217
219
|
- !ruby/object:Gem::Version
|
218
220
|
version: '0'
|
219
221
|
requirements: []
|
220
|
-
rubygems_version: 3.
|
222
|
+
rubygems_version: 3.5.3
|
223
|
+
signing_key:
|
221
224
|
specification_version: 4
|
222
225
|
summary: WAMP(Web Application Messaging Protocol) ruby client
|
223
226
|
test_files: []
|