msgpack-rpc-stack 0.7.0 → 0.7.3

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: dd76cc71b043173ef94c8f7d21041a9ac2490c03f2cfc936ad3dddb3e0cb40b8
4
- data.tar.gz: b0d2e72657bf2e3bca72870f9f1ca7388178cf33d708080a3f0ec32531aa2a47
3
+ metadata.gz: 8b687418a1a9a272d68e0fdcf9dc186f9c7cb424d26bf1ea00257ee957e905bf
4
+ data.tar.gz: 0bc7c33e5e91070e051d4d3e2dbf7d44735e584e327a4a6992e573793ed1be40
5
5
  SHA512:
6
- metadata.gz: f8ae673b9d04a9ea9ff4baaad08b4d4c1af92df50f93f8f72fcc4941171c1c05eea8a8ff7438a43b92c804f79a3f1a64824ff8225e4a4e22fafc03896a864dc4
7
- data.tar.gz: 74142d315c72fe443f8fcf5aaf952a453ffae01a19208d332a73ad93a662bb7690429f07aa8d73a543962cdf68b532cf3e31b1b13d969f171cfbc2948aa5cdaf
6
+ metadata.gz: 17bff07e8d05495571b1a2492b5ad00c269b031ef526442eda3af8297886d7c7a7bce511ffce6334272962f7cab4f9f6b312af3e800bf2311159b91b375838cd
7
+ data.tar.gz: f197aaf7b86bb57f654a5cbe3ec632afcea0ab6716ade19ff5500517a9afdaa34ba852728e9eae2040aede41ade4e30ce93189d0a72d53601ecf7fe3aa861672
@@ -12,6 +12,20 @@ require 'msgpack/rpc'
12
12
 
13
13
  module MessagePack
14
14
  module Rpc
15
+ #
16
+ # Module that implemented client protocol of MessagePack-RPC.
17
+ #
18
+ # @abstract
19
+ # Include from the class that implements the rpc client.
20
+ # When the client implementation class receives data from the
21
+ # communication line, it must call the receive_data() method and pass
22
+ # received data to the MessagePack::Rpc::Client module.
23
+ # Also, the client implementation class should define a method
24
+ # send_data() to actually send the data. Call this method from
25
+ # within the MessagePack::Rpc::Client module if necessary
26
+ # (Implement send_data() method to accept string objects in arguments).
27
+ # If you receive a protocol level error, override the on_error() method.
28
+ #
15
29
  module Client
16
30
  class << self
17
31
  def included(klass)
@@ -67,6 +81,27 @@ module MessagePack
67
81
  end
68
82
  private :error_occured
69
83
 
84
+ #
85
+ # call the procedure of peer rpc server
86
+ #
87
+ # @param [Symbol] meth
88
+ # target procedure name.
89
+ #
90
+ # @param [Array] args
91
+ # arguments for procedure.
92
+ #
93
+ # @return [Integer]
94
+ # assigned mesaage id
95
+ #
96
+ # @yield [res, err]
97
+ # callback that is when the procedure call completes.
98
+ #
99
+ # @yieldparam [Object] res
100
+ # responce of procedure when procedure successed.
101
+ #
102
+ # @yieldparam [Object] err
103
+ # error data of procedure when procedure failed.
104
+ #
70
105
  def call(meth, *args, &blk)
71
106
  raise ArgumentError.new("handler is not spcified") if not blk
72
107
 
@@ -78,14 +113,34 @@ module MessagePack
78
113
  return id
79
114
  end
80
115
 
81
- def notify(meth, *args)
82
- send_data([2, meth, args].to_msgpack)
83
- end
84
-
116
+ #
117
+ # cacel the call message
118
+ #
119
+ # @param [Integer] id
120
+ # message id of calling message (return value of
121
+ # MessagePack::Rpc::Client#call())
122
+ #
123
+ # @note
124
+ # When this method is called, the procedure call corresponding to
125
+ # the ID specified in the argument is cancelled.
126
+ #
85
127
  def cancel(id)
86
128
  session_map.delete(id)
87
129
  end
88
130
 
131
+ #
132
+ # send the notification to peer rpc server
133
+ #
134
+ # @param [Symbol] meth
135
+ # notify name
136
+ #
137
+ # @param [Array] args
138
+ # argument for notification
139
+ #
140
+ def notify(meth, *args)
141
+ send_data([2, meth, args].to_msgpack)
142
+ end
143
+
89
144
  def eval_response(resp)
90
145
  if not resp.kind_of?(Array)
91
146
  error_occured("responce is not array")
@@ -128,10 +183,27 @@ module MessagePack
128
183
  end
129
184
  private :eval_response
130
185
 
186
+ #
187
+ # emqueu the received datagram to communication buffer
188
+ #
189
+ # @param [Blob] data
190
+ # recevied data from rpc server.
191
+ #
192
+ # @note
193
+ # Use this method for datagram communication. \
194
+ # Use it when it is guaranteed that data is exchanged \
195
+ # in packets (it works a bit faster).
196
+ #
131
197
  def receive_dgram(data)
132
198
  eval_response(MessagePack.unpack(data, self.class.msgpack_options))
133
199
  end
134
200
 
201
+ #
202
+ # emqueu the received data to communication buffer
203
+ #
204
+ # @param [Blob] data
205
+ # recevied data from rpc server.
206
+ #
135
207
  def receive_stream(data)
136
208
  begin
137
209
  unpacker.feed_each(data) {|resp| eval_response(resp)}
@@ -145,6 +217,16 @@ module MessagePack
145
217
  end
146
218
  end
147
219
 
220
+ #
221
+ # define the notify method
222
+ #
223
+ # @param [Symbol] name
224
+ # notification name
225
+ #
226
+ # @yield [*args]
227
+ # callback that is when received the notification
228
+ # from peer rpc server.
229
+ #
148
230
  def on(name, &blk)
149
231
  raise ArgumentError.new("handler is not spcified") if not blk
150
232
  notify_handler[name] = blk
@@ -12,8 +12,89 @@ require 'msgpack/rpc'
12
12
 
13
13
  module MessagePack
14
14
  module Rpc
15
+
16
+ #
17
+ # Module that implemented server protocol of MessagePack-RPC.
18
+ #
19
+ # @abstract
20
+ # Include from the class that implements the rpc server. You can expose
21
+ # When the client implementation class receives data from the
22
+ # communication line, it must call the receive_data() method and pass
23
+ # received data to the MessagePack::Rpc::Server module.
24
+ # Also, the client implementation class should define a method
25
+ # send_data() to actually send the data. Call this method from
26
+ # within the MessagePack::Rpc::Server module if necessary
27
+ # (Implement send_data() method to accept string objects in arguments).
28
+ # If you receive a protocol level error, override the on_error() method.
29
+ # the methods defined in that class as RPC procedures.
30
+ #
15
31
  module Server
16
32
  class << self
33
+ #
34
+ # @!method msgpack_options(**opts)
35
+ # set MessagePack::Unpacker option.
36
+ #
37
+ # @example set :symbolize_keys option
38
+ # class Server
39
+ # include MessagePack::Rpc::Server
40
+ #
41
+ # msgpack_options = {:symbolize_keys => true}
42
+ #
43
+ # def test(data)
44
+ # # data's key are symbolized.
45
+ # return data[:data]
46
+ # end
47
+ # remote_public :test
48
+ # end
49
+
50
+ #
51
+ # @!method remote_public(name)
52
+ # expose syncronous procedure.
53
+ # The return value of the method exposed by this method is the
54
+ # return value of the procedure. If an exception occurs, the
55
+ # exception is returned as an error value.
56
+ #
57
+ # @param [Symbol] name
58
+ # target method name.
59
+ #
60
+ # @example expose syncronous procedure
61
+ # class Server
62
+ # include MessagePack::Rpc::Server
63
+ #
64
+ # def test(id)
65
+ # raise("id isnot defined") if id.nil?
66
+ # return "hello #{id}"
67
+ # end
68
+ # remote_public :test
69
+ # end
70
+ #
71
+
72
+ #
73
+ # @!method remote_async(name)
74
+ # expose asynchronous procedure.
75
+ # The method exposed by this method takes a deferred object as its
76
+ # first argument. Returns the processing result asynchronously
77
+ # through this object.
78
+ #
79
+ # @param [Symbol] name
80
+ # target method name.
81
+ #
82
+ # @example expose asyncronous procedure
83
+ # class Server
84
+ # include MessagePack::Rpc::Server
85
+ #
86
+ # def test(df, id)
87
+ # if id.nil?
88
+ # df.reject("id isnot defined")
89
+ # else
90
+ # df.resolve("hello #{id}")
91
+ # end
92
+ # end
93
+ # remote_async :test
94
+ # end
95
+ #
96
+
97
+ # @!visibility protected
17
98
  def included(klass)
18
99
  m = Module.new {
19
100
  @@error = Class.new(StandardError) {
@@ -197,10 +278,30 @@ module MessagePack
197
278
  end
198
279
  private :eval_message
199
280
 
281
+ #
282
+ # send the notification to peer rpc client
283
+ #
284
+ # @param [Symbol] meth
285
+ # notify name
286
+ #
287
+ # @param [Array] args
288
+ # argument for notification
289
+ #
200
290
  def notify(meth, *args)
201
291
  send_data([2, meth, args].to_msgpack)
202
292
  end
203
293
 
294
+ #
295
+ # emqueu the received datagram to communication buffer
296
+ #
297
+ # @param [Blob] data
298
+ # recevied data from peer rpc client.
299
+ #
300
+ # @note
301
+ # Use this method for datagram communication.
302
+ # Use it when it is guaranteed that data is exchanged
303
+ # in packets (it works a bit faster).
304
+ #
204
305
  def receive_dgram(data)
205
306
  msg = MessagePack.unpack(data, self.class.msgpack_options)
206
307
 
@@ -211,6 +312,12 @@ module MessagePack
211
312
  eval_message(msg)
212
313
  end
213
314
 
315
+ #
316
+ # emqueu the received data to communication buffer
317
+ #
318
+ # @param [Blob] data
319
+ # recevied data from peer rpc client.
320
+ #
214
321
  def receive_stream(data)
215
322
  begin
216
323
  unpacker.feed_each(data) {|msg| eval_message(msg)}
@@ -1,5 +1,5 @@
1
1
  module MessagePack
2
2
  module Rpc
3
- VERSION = "0.7.0"
3
+ VERSION = "0.7.3"
4
4
  end
5
5
  end
@@ -35,7 +35,7 @@ Gem::Specification.new do |spec|
35
35
 
36
36
  spec.required_ruby_version = ">= 2.4.0"
37
37
 
38
- spec.add_development_dependency "bundler", "~> 2.0"
39
- spec.add_development_dependency "rake", "~> 10.0"
40
- spec.add_dependency "msgpack", "~> 1.2.6"
38
+ spec.add_development_dependency "bundler", ">= 2.1"
39
+ spec.add_development_dependency "rake", ">= 12.3.3"
40
+ spec.add_dependency "msgpack", ">= 1.6.0"
41
41
  end
metadata CHANGED
@@ -1,57 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: msgpack-rpc-stack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hiroshi Kuwagata
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-04 00:00:00.000000000 Z
11
+ date: 2023-03-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '2.0'
19
+ version: '2.1'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '2.0'
26
+ version: '2.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: 12.3.3
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: 12.3.3
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: msgpack
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 1.2.6
47
+ version: 1.6.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 1.2.6
54
+ version: 1.6.0
55
55
  description: A module of implementation MessagePack-RPC stack
56
56
  email:
57
57
  - kgt9221@gmail.com
@@ -94,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
94
  - !ruby/object:Gem::Version
95
95
  version: '0'
96
96
  requirements: []
97
- rubygems_version: 3.0.1
97
+ rubygems_version: 3.4.8
98
98
  signing_key:
99
99
  specification_version: 4
100
100
  summary: MessagePack-RPC module