redisrpc 0.3.3 → 0.3.4

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 (2) hide show
  1. data/lib/redisrpc.rb +20 -10
  2. metadata +5 -5
data/lib/redisrpc.rb CHANGED
@@ -24,6 +24,10 @@ module RedisRPC
24
24
  end
25
25
 
26
26
 
27
+ class TimeoutException<Exception
28
+ end
29
+
30
+
27
31
  class FunctionCall
28
32
 
29
33
  def initialize(args={})
@@ -45,22 +49,26 @@ module RedisRPC
45
49
 
46
50
  class Client
47
51
 
48
- def initialize(redis_server, input_queue)
52
+ def initialize(redis_server, message_queue, timeout=0)
49
53
  @redis_server = redis_server
50
- @input_queue = input_queue
54
+ @message_queue = message_queue
55
+ @timeout = timeout
51
56
  end
52
57
 
53
58
  def method_missing(sym, *args, &block)
54
59
  function_call = {'name' => sym.to_s, 'args' => args}
55
- response_queue = @input_queue + ':rpc:' + rand_string
60
+ response_queue = @message_queue + ':rpc:' + rand_string
56
61
  rpc_request = {'function_call' => function_call, 'response_queue' => response_queue}
57
62
  message = JSON.generate rpc_request
58
63
  if $DEBUG
59
64
  $stderr.puts 'RPC Request: ' + message
60
65
  end
61
- @redis_server.rpush @input_queue, message
62
- timeout_s = 0 # Block forever.
63
- message_queue, message = @redis_server.blpop response_queue, timeout_s
66
+ @redis_server.rpush @message_queue, message
67
+ result = @redis_server.blpop response_queue, @timeout
68
+ if result.nil?
69
+ raise TimeoutException
70
+ end
71
+ message_queue, message = result
64
72
  if $DEBUG
65
73
  if message_queue != response_queue
66
74
  fail 'assertion failed'
@@ -91,17 +99,19 @@ module RedisRPC
91
99
 
92
100
  class Server
93
101
 
94
- def initialize(redis_server, input_queue, local_object)
102
+ def initialize(redis_server, message_queue, local_object)
95
103
  @redis_server = redis_server
96
- @input_queue = input_queue
104
+ @message_queue = message_queue
97
105
  @local_object = local_object
98
106
  end
99
107
 
100
108
  def run
109
+ # Flush the message queue.
110
+ @redis_server.del @message_queue
101
111
  loop do
102
- message_queue, message = @redis_server.blpop @input_queue, 0
112
+ message_queue, message = @redis_server.blpop @message_queue, 0
103
113
  if $DEBUG
104
- fail 'assertion failed' if message_queue != @input_queue
114
+ fail 'assertion failed' if message_queue != @message_queue
105
115
  $stderr.puts 'RPC Request: ' + message
106
116
  end
107
117
  rpc_request = JSON.parse(message)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redisrpc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-03 00:00:00.000000000 Z
12
+ date: 2012-04-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: redis
16
- requirement: &2151871000 !ruby/object:Gem::Requirement
16
+ requirement: &2151801000 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - <
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: 3.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2151871000
24
+ version_requirements: *2151801000
25
25
  description: ! 'RedisRPC is the easiest to use RPC library in the world. (No small
26
26
  claim!) It
27
27
 
@@ -43,7 +43,7 @@ description: ! 'RedisRPC is the easiest to use RPC library in the world. (No sma
43
43
 
44
44
  Many other RPC mechanisms are either programming language specific (e.g.
45
45
 
46
- JavaRMI or require boiler-plate code for explicit typing (e.g. Thrift).
46
+ Java RMI) or require boiler-plate code for explicit typing (e.g. Thrift).
47
47
 
48
48
  RedisRPC was designed to be extremely easy to use by eliminating boiler-plate
49
49