amiral 0.1.4 → 0.1.5
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/lib/amiral/version.rb +1 -1
- data/lib/amiral.rb +14 -45
- metadata +2 -2
data/lib/amiral/version.rb
CHANGED
data/lib/amiral.rb
CHANGED
@@ -254,11 +254,9 @@ module Amiral
|
|
254
254
|
|
255
255
|
def initialize settings
|
256
256
|
@settings = {
|
257
|
+
:prefix => "amiral:",
|
257
258
|
:redis_in => Redis.new,
|
258
259
|
:redis_out => Redis.new,
|
259
|
-
:exchange => "req",
|
260
|
-
:queue_ack => "ack",
|
261
|
-
:queue_response => "res",
|
262
260
|
:keytype => :dss,
|
263
261
|
:hostname => hostname,
|
264
262
|
:loglevel => Logger::INFO,
|
@@ -291,8 +289,8 @@ module Amiral
|
|
291
289
|
end
|
292
290
|
|
293
291
|
def listen
|
294
|
-
|
295
|
-
@redis_in.subscribe
|
292
|
+
prefix = @settings[:prefix]
|
293
|
+
@redis_in.subscribe "#{prefix}req" do |on|
|
296
294
|
|
297
295
|
on.message do |x, payload|
|
298
296
|
|
@@ -334,16 +332,19 @@ module Amiral
|
|
334
332
|
end
|
335
333
|
|
336
334
|
def send_ack response
|
337
|
-
send_payload
|
335
|
+
send_payload "ack", response
|
338
336
|
end
|
339
337
|
|
340
338
|
def send_response response
|
341
|
-
send_payload
|
339
|
+
send_payload "res", response
|
342
340
|
end
|
343
341
|
|
344
|
-
def send_payload
|
342
|
+
def send_payload type, response
|
343
|
+
puts "response: #{response}"
|
344
|
+
uuid = response[:in_reply_to]
|
345
345
|
response[:hostname] = @settings[:hostname]
|
346
|
-
|
346
|
+
prefix = @settings[:prefix]
|
347
|
+
@redis_out.publish "#{prefix}#{type}:#{uuid}", serialize(response)
|
347
348
|
end
|
348
349
|
end
|
349
350
|
|
@@ -353,9 +354,7 @@ module Amiral
|
|
353
354
|
def initialize settings
|
354
355
|
@settings = {
|
355
356
|
:redis => Redis.new,
|
356
|
-
:
|
357
|
-
:queue_ack => "ack",
|
358
|
-
:queue_response => "res",
|
357
|
+
:prefix => "amiral:",
|
359
358
|
:ack_timeout => 2,
|
360
359
|
:response_timeout => 5,
|
361
360
|
:match_spec => {:all => true},
|
@@ -391,43 +390,13 @@ module Amiral
|
|
391
390
|
@redis.publish @settings[:exchange], serialize(request)
|
392
391
|
|
393
392
|
# pop items for 2 seconds
|
394
|
-
acks =
|
393
|
+
acks = {}
|
394
|
+
resps = {}
|
395
395
|
puts "accepting acknowledgements for #{@settings[:ack_timeout]} seconds"
|
396
396
|
limit = timestamp + @settings[:ack_timeout]
|
397
397
|
|
398
|
-
|
399
|
-
t = timestamp
|
400
|
-
t = (limit - t == 0) ? 1 : (limit - t)
|
401
|
-
(q, data) = @redis.brpop(@settings[:queue_ack], t)
|
402
|
-
if data
|
403
|
-
ack = deserialize data
|
404
|
-
acks << ack if ack['in_reply_to'] == uuid
|
405
|
-
end
|
406
|
-
end
|
407
|
-
|
408
|
-
pos_acks = acks.keep_if do |a|
|
409
|
-
a['status'] == 'start'
|
410
|
-
end
|
411
|
-
|
412
|
-
remaining = pos_acks.length
|
413
|
-
puts "got #{remaining}/#{acks.length} positive acknowledgements"
|
414
|
-
|
415
|
-
# wait for responses now
|
398
|
+
## XXX: broken for now
|
416
399
|
@responses = []
|
417
|
-
limit = timestamp + @settings[:response_timeout]
|
418
|
-
while timestamp < limit && remaining > 0 do
|
419
|
-
t = timestamp
|
420
|
-
t = (limit - t == 0) ? 1 : (limit - t)
|
421
|
-
(q, data) = @redis.brpop(@settings[:queue_response], t)
|
422
|
-
|
423
|
-
if data
|
424
|
-
res = deserialize data
|
425
|
-
if res['in_reply_to'] == uuid
|
426
|
-
@responses << res
|
427
|
-
remaining -= 1
|
428
|
-
end
|
429
|
-
end
|
430
|
-
end
|
431
400
|
|
432
401
|
puts "got #{@responses.length}/#{pos_acks.length} responses"
|
433
402
|
@responses
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: amiral
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: redis
|