qrpc 0.4.0 → 0.9.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.
- data/CHANGES.txt +9 -6
- data/Gemfile +10 -4
- data/Gemfile.lock +34 -12
- data/LICENSE.txt +1 -1
- data/README.md +92 -25
- data/Rakefile +2 -1
- data/TODO.md +1 -3
- data/VERSION +1 -1
- data/lib/qrpc/client.rb +13 -5
- data/lib/qrpc/client/dispatcher.rb +66 -50
- data/lib/qrpc/client/exception.rb +8 -37
- data/lib/qrpc/client/job.rb +49 -16
- data/lib/qrpc/general.rb +61 -1
- data/lib/qrpc/generator/object-id.rb +43 -0
- data/lib/qrpc/generator/uuid.rb +43 -0
- data/lib/qrpc/locator.rb +11 -85
- data/lib/qrpc/locator/em-jack.rb +160 -0
- data/lib/qrpc/locator/evented-queue.rb +101 -0
- data/lib/qrpc/protocol/abstract.rb +119 -0
- data/lib/qrpc/protocol/abstract/error.rb +54 -0
- data/lib/qrpc/protocol/abstract/object.rb +81 -0
- data/lib/qrpc/protocol/abstract/request.rb +126 -0
- data/lib/qrpc/protocol/abstract/response.rb +103 -0
- data/lib/qrpc/protocol/json-rpc.rb +32 -0
- data/lib/qrpc/protocol/json-rpc/error.rb +71 -0
- data/lib/qrpc/protocol/json-rpc/native/exception-data.rb +247 -0
- data/lib/qrpc/protocol/json-rpc/native/qrpc-object.rb +137 -0
- data/lib/qrpc/protocol/json-rpc/request.rb +140 -0
- data/lib/qrpc/protocol/json-rpc/response.rb +146 -0
- data/lib/qrpc/protocol/object.rb +32 -0
- data/lib/qrpc/protocol/object/error.rb +46 -0
- data/lib/qrpc/protocol/object/request.rb +111 -0
- data/lib/qrpc/protocol/object/response.rb +93 -0
- data/lib/qrpc/server.rb +63 -48
- data/lib/qrpc/server/dispatcher.rb +5 -107
- data/lib/qrpc/server/job.rb +69 -19
- data/qrpc.gemspec +55 -19
- data/test-both.rb +85 -0
- data/test-client.rb +36 -8
- data/test-server.rb +17 -12
- metadata +181 -31
- data/lib/qrpc/protocol/exception-data.rb +0 -227
- data/lib/qrpc/protocol/qrpc-object.rb +0 -103
- data/lib/qrpc/protocol/request.rb +0 -46
@@ -1,103 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require "json-rpc-objects/generic/object"
|
3
|
-
require "json-rpc-objects/request"
|
4
|
-
|
5
|
-
##
|
6
|
-
# General QRPC module.
|
7
|
-
#
|
8
|
-
|
9
|
-
module QRPC
|
10
|
-
|
11
|
-
##
|
12
|
-
# JSON RPC helper module.
|
13
|
-
# @since 0.2.0
|
14
|
-
#
|
15
|
-
|
16
|
-
module Protocol
|
17
|
-
|
18
|
-
##
|
19
|
-
# QRPC JSON-RPC QRPC object. Extends the
|
20
|
-
# +JsonRpcObjects::Generic::Object+. See its documentation for
|
21
|
-
# additional methods.
|
22
|
-
#
|
23
|
-
# @since 0.2.0
|
24
|
-
#
|
25
|
-
|
26
|
-
class QrpcObject < JsonRpcObjects::Generic::Object
|
27
|
-
|
28
|
-
##
|
29
|
-
# Holds JSON-RPC version indication.
|
30
|
-
#
|
31
|
-
|
32
|
-
VERSION = JsonRpcObjects::Request::VERSION
|
33
|
-
|
34
|
-
##
|
35
|
-
# Creates new QRPC JSON-RPC object.
|
36
|
-
#
|
37
|
-
# @param [Hash] QRPC object optional arguments
|
38
|
-
# @return [QRPC::Protocol::QrpcObject] new instance
|
39
|
-
#
|
40
|
-
|
41
|
-
def self.create(opts = { })
|
42
|
-
self::new(opts)
|
43
|
-
end
|
44
|
-
|
45
|
-
##
|
46
|
-
# Checks correctness of the object data.
|
47
|
-
#
|
48
|
-
|
49
|
-
def check!
|
50
|
-
self.normalize!
|
51
|
-
|
52
|
-
if (not @priority.nil?) and not (@priority.kind_of? Numeric)
|
53
|
-
raise Exception::new("Priority is expected to be Numeric.")
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
##
|
58
|
-
# Renders data to output form.
|
59
|
-
# @return [Hash] with data of object
|
60
|
-
#
|
61
|
-
|
62
|
-
def output
|
63
|
-
result = { "version" => "1.0.1" }
|
64
|
-
|
65
|
-
if not @priority.nil?
|
66
|
-
result["priority"] = @priority
|
67
|
-
end
|
68
|
-
|
69
|
-
if not @client.nil?
|
70
|
-
result["client"] = @client.to_s
|
71
|
-
end
|
72
|
-
|
73
|
-
return result
|
74
|
-
end
|
75
|
-
|
76
|
-
|
77
|
-
protected
|
78
|
-
|
79
|
-
##
|
80
|
-
# Assigns data.
|
81
|
-
#
|
82
|
-
|
83
|
-
def data=(value, mode = nil)
|
84
|
-
data = __convert_data(value, mode)
|
85
|
-
|
86
|
-
@priority = data[:priority]
|
87
|
-
@client = data[:client]
|
88
|
-
end
|
89
|
-
|
90
|
-
##
|
91
|
-
# Converts data to standard (defined) format.
|
92
|
-
#
|
93
|
-
|
94
|
-
def normalize!
|
95
|
-
if not @priority.nil?
|
96
|
-
@priority = @priority.to_i
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
end
|
101
|
-
|
102
|
-
end
|
103
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require "json-rpc-objects/request"
|
3
|
-
require "qrpc/general"
|
4
|
-
require "qrpc/protocol/qrpc-object"
|
5
|
-
|
6
|
-
##
|
7
|
-
# General QRPC module.
|
8
|
-
#
|
9
|
-
|
10
|
-
module QRPC
|
11
|
-
|
12
|
-
##
|
13
|
-
# JSON RPC helper module.
|
14
|
-
# @since 0.2.0
|
15
|
-
#
|
16
|
-
|
17
|
-
module Protocol
|
18
|
-
|
19
|
-
##
|
20
|
-
# QRPC JSON-RPC request. Extends +JsonRpcObjects::Request+.
|
21
|
-
# See its documentation for additional reference.
|
22
|
-
#
|
23
|
-
# @since 0.2.0
|
24
|
-
#
|
25
|
-
|
26
|
-
class Request < JsonRpcObjects::Request
|
27
|
-
|
28
|
-
##
|
29
|
-
# Creates new QRPC request.
|
30
|
-
#
|
31
|
-
# @param [Symbol] client_id client (session) ID
|
32
|
-
# @param [Symbol] method job method name
|
33
|
-
# @param [Array] arguments array of arguments for job
|
34
|
-
# @param [Integer] priority job priority
|
35
|
-
# @param [Proc] callback result callback
|
36
|
-
# @return [QRPC::Protocol::Request] new protocol request object
|
37
|
-
#
|
38
|
-
|
39
|
-
def self.create(client_id, id, method, arguments = [ ], priority = QRPC::DEFAULT_PRIORITY)
|
40
|
-
qrpc = QRPC::Protocol::QrpcObject::create(:client => client_id, :priority => priority)
|
41
|
-
super(method, arguments, :id => id.to_s, :qrpc => qrpc.output)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|
46
|
-
end
|