cf-message-bus 0.0.1 → 0.0.2

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.
@@ -14,10 +14,10 @@ module CfMessageBus
14
14
  @recovery_callback = lambda {}
15
15
  end
16
16
 
17
- def subscribe(subject, opts = {}, &block)
18
- @subscriptions[subject] = [opts, block]
17
+ def subscribe(subject, options = {}, &block)
18
+ @subscriptions[subject] = [options, block]
19
19
 
20
- subscribe_on_reactor(subject, opts) do |parsed_data, inbox|
20
+ subscribe_on_reactor(subject, options) do |parsed_data, inbox|
21
21
  EM.defer do
22
22
  run_handler(block, parsed_data, inbox, subject, 'subscription')
23
23
  end
@@ -35,35 +35,42 @@ module CfMessageBus
35
35
  end
36
36
 
37
37
  def request(subject, data = nil, options = {}, &block)
38
- internal_bus.request(subject, encode(data), options) do |payload, inbox|
38
+ response_timeout = options.delete(:timeout)
39
+ result_count = options.delete(:result_count)
40
+ options[:max] = result_count if result_count
41
+
42
+ subscription_id = internal_bus.request(subject, encode(data), options) do |payload, inbox|
39
43
  process_message(payload, inbox) do |parsed_data, inbox|
40
44
  run_handler(block, parsed_data, inbox, subject, 'response')
41
45
  end
42
46
  end
47
+
48
+ if response_timeout
49
+ internal_bus.timeout(subscription_id, response_timeout, expected: result_count || 1) do
50
+ run_handler(block, {timeout: true}, nil, subject, 'timeout')
51
+ end
52
+ end
53
+ subscription_id
43
54
  end
44
55
 
45
- def synchronous_request(subject, data = nil, opts = {})
46
- result_count = opts[:result_count] || 1
47
- timeout = opts[:timeout] || -1
56
+ def synchronous_request(subject, data = nil, options = {})
57
+ options[:result_count] ||= 1
58
+ result_count = options[:result_count]
48
59
 
49
60
  return [] if result_count <= 0
50
61
 
51
- response = EM.schedule_sync do |promise|
62
+ EM.schedule_sync do |promise|
52
63
  results = []
53
64
 
54
- sid = request(subject, encode(data), max: result_count) do |data|
55
- results << data
56
- promise.deliver(results) if results.size == result_count
57
- end
58
-
59
- if timeout >= 0
60
- internal_bus.timeout(sid, timeout, expected: result_count) do
65
+ request(subject, encode(data), options) do |response|
66
+ if response[:timeout]
61
67
  promise.deliver(results)
68
+ else
69
+ results << response
70
+ promise.deliver(results) if results.size == result_count
62
71
  end
63
72
  end
64
73
  end
65
-
66
- response
67
74
  end
68
75
 
69
76
  def unsubscribe(subscription_id)
@@ -95,9 +102,9 @@ module CfMessageBus
95
102
  end
96
103
  end
97
104
 
98
- def subscribe_on_reactor(subject, opts = {}, &blk)
105
+ def subscribe_on_reactor(subject, options = {}, &blk)
99
106
  EM.schedule do
100
- internal_bus.subscribe(subject, opts) do |msg, inbox|
107
+ internal_bus.subscribe(subject, options) do |msg, inbox|
101
108
  process_message(msg, inbox, &blk)
102
109
  end
103
110
  end
@@ -1,3 +1,3 @@
1
1
  module CfMessageBus
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cf-message-bus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
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: 2013-07-16 00:00:00.000000000 Z
12
+ date: 2013-07-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler