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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f4a4f50da44bd4849d8e503de34fcdee9edf558c06244ec43746b81401c09e3a
4
- data.tar.gz: 5624eedc589212e83ba1684ab67e06d27bbb14c35dc8cf91245aed67b92475ce
3
+ metadata.gz: 90143368352302b58d43e59a436f6317842edd21950335b698897af98261ac01
4
+ data.tar.gz: e7441cba5947a6bc6a1f4424b059b6c0c28626d01f71cc3d55d400da70d1622f
5
5
  SHA512:
6
- metadata.gz: 2867240ea024fafcd2fbc93da161473a546989fe349bc9be61a3e12c209d2358187957f291b0ee9d58874e524139cbfbd567838a4305bde178bb5c7e2519f253
7
- data.tar.gz: 477e4d9640d8da4e555ace59c5b29f76c7b2b799399c4ad76e17ef9402ca2284519299c4b1e931b18d8e788ba60af7c72300f87819969743e51819fcd9bfb403
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
- stored_data.fetch(:handler).call(response)
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(_code, _reason)
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
- @serializer = if protocols.include?("wamp.2.msgpack")
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
- close
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
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Wamp
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.2"
5
5
  end
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.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.0
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-05-30 00:00:00.000000000 Z
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.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.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.6.0.dev
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: []