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.
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