qrpc 0.4.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. data/CHANGES.txt +9 -6
  2. data/Gemfile +10 -4
  3. data/Gemfile.lock +34 -12
  4. data/LICENSE.txt +1 -1
  5. data/README.md +92 -25
  6. data/Rakefile +2 -1
  7. data/TODO.md +1 -3
  8. data/VERSION +1 -1
  9. data/lib/qrpc/client.rb +13 -5
  10. data/lib/qrpc/client/dispatcher.rb +66 -50
  11. data/lib/qrpc/client/exception.rb +8 -37
  12. data/lib/qrpc/client/job.rb +49 -16
  13. data/lib/qrpc/general.rb +61 -1
  14. data/lib/qrpc/generator/object-id.rb +43 -0
  15. data/lib/qrpc/generator/uuid.rb +43 -0
  16. data/lib/qrpc/locator.rb +11 -85
  17. data/lib/qrpc/locator/em-jack.rb +160 -0
  18. data/lib/qrpc/locator/evented-queue.rb +101 -0
  19. data/lib/qrpc/protocol/abstract.rb +119 -0
  20. data/lib/qrpc/protocol/abstract/error.rb +54 -0
  21. data/lib/qrpc/protocol/abstract/object.rb +81 -0
  22. data/lib/qrpc/protocol/abstract/request.rb +126 -0
  23. data/lib/qrpc/protocol/abstract/response.rb +103 -0
  24. data/lib/qrpc/protocol/json-rpc.rb +32 -0
  25. data/lib/qrpc/protocol/json-rpc/error.rb +71 -0
  26. data/lib/qrpc/protocol/json-rpc/native/exception-data.rb +247 -0
  27. data/lib/qrpc/protocol/json-rpc/native/qrpc-object.rb +137 -0
  28. data/lib/qrpc/protocol/json-rpc/request.rb +140 -0
  29. data/lib/qrpc/protocol/json-rpc/response.rb +146 -0
  30. data/lib/qrpc/protocol/object.rb +32 -0
  31. data/lib/qrpc/protocol/object/error.rb +46 -0
  32. data/lib/qrpc/protocol/object/request.rb +111 -0
  33. data/lib/qrpc/protocol/object/response.rb +93 -0
  34. data/lib/qrpc/server.rb +63 -48
  35. data/lib/qrpc/server/dispatcher.rb +5 -107
  36. data/lib/qrpc/server/job.rb +69 -19
  37. data/qrpc.gemspec +55 -19
  38. data/test-both.rb +85 -0
  39. data/test-client.rb +36 -8
  40. data/test-server.rb +17 -12
  41. metadata +181 -31
  42. data/lib/qrpc/protocol/exception-data.rb +0 -227
  43. data/lib/qrpc/protocol/qrpc-object.rb +0 -103
  44. 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