rsmp 0.8.1 → 0.8.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5316c50ad6cd09d30e7d1baab78e717fac4656c06178272ef4adc1c6647fb544
4
- data.tar.gz: 6ef4d635b42f3eac19b94b68bbcb05c59ce94de96e0e27f1f5c7a6deefd4e470
3
+ metadata.gz: e12fd3ea8f7f931b3ce3269a13e8ccd1248642a89062682b0088d044732f1757
4
+ data.tar.gz: ff18134bf0e16210e30a5820f5bd2c27b5fb7f81bcf2f9f993e6c8aefe69d9d5
5
5
  SHA512:
6
- metadata.gz: 1947906505e532d0d47d93f1d9fe2c8c3199ff58d378b9be3df18865339e966a6ad5f74512aa168ee4a5d641624cf7b0f170436d2c11e4f495bd7d6b88be502f
7
- data.tar.gz: ee0ecbb229637276d6cec21ccacc6414199ad7f0392324633231cb4a8632a8b64b1aa2ba5abd979a7699ed6721a5a40b9d9c531f45dc0f59345149662e608b12
6
+ metadata.gz: 3335d30f728748483d26e5d3d0c5671746b80dece2badc781064d0ae81f277fd7b899e9e508255a17d6f1cbd017a64164f6f0a21f1ca777b359c23b1fa482ebf
7
+ data.tar.gz: a2e457988983d9c3173f91c1269979ea6a37ce75ac5e0acc30f21fbb34d2cfab8fe81295ac43c6a6010df0f7c06e11dc9efadd01c28fc20a0e77ff6d6c580787
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.0.3
1
+ 3.1.0
data/Gemfile.lock CHANGED
@@ -1,27 +1,21 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rsmp (0.8.1)
4
+ rsmp (0.8.5)
5
5
  async (~> 1.29.1)
6
- async-io (~> 1.32.1)
6
+ async-io (~> 1.32.2)
7
7
  colorize (~> 0.8.1)
8
8
  rsmp_schemer
9
- thor (~> 1.0.1)
9
+ thor (~> 1.2.1)
10
10
 
11
11
  GEM
12
12
  remote: https://rubygems.org/
13
13
  specs:
14
- activesupport (6.1.4)
15
- concurrent-ruby (~> 1.0, >= 1.0.2)
16
- i18n (>= 1.6, < 2)
17
- minitest (>= 5.1)
18
- tzinfo (~> 2.0)
19
- zeitwerk (~> 2.3)
20
- aruba (1.1.2)
14
+ aruba (2.0.0)
21
15
  bundler (>= 1.17, < 3.0)
22
16
  childprocess (>= 2.0, < 5.0)
23
17
  contracts (>= 0.16.0, < 0.18.0)
24
- cucumber (>= 2.4, < 7.0)
18
+ cucumber (>= 4.0, < 8.0)
25
19
  rspec-expectations (~> 3.4)
26
20
  thor (~> 1.0)
27
21
  async (1.29.2)
@@ -33,68 +27,56 @@ GEM
33
27
  builder (3.2.4)
34
28
  childprocess (4.1.0)
35
29
  colorize (0.8.1)
36
- concurrent-ruby (1.1.9)
37
30
  console (1.14.0)
38
31
  fiber-local
39
32
  contracts (0.17)
40
- cucumber (6.1.0)
33
+ cucumber (7.1.0)
41
34
  builder (~> 3.2, >= 3.2.4)
42
- cucumber-core (~> 9.0, >= 9.0.1)
43
- cucumber-create-meta (~> 4.0, >= 4.0.0)
44
- cucumber-cucumber-expressions (~> 12.1, >= 12.1.1)
45
- cucumber-gherkin (~> 18.1, >= 18.1.0)
46
- cucumber-html-formatter (~> 13.0, >= 13.0.0)
47
- cucumber-messages (~> 15.0, >= 15.0.0)
48
- cucumber-wire (~> 5.0, >= 5.0.1)
35
+ cucumber-core (~> 10.1, >= 10.1.0)
36
+ cucumber-create-meta (~> 6.0, >= 6.0.1)
37
+ cucumber-cucumber-expressions (~> 14.0, >= 14.0.0)
38
+ cucumber-gherkin (~> 22.0, >= 22.0.0)
39
+ cucumber-html-formatter (~> 17.0, >= 17.0.0)
40
+ cucumber-messages (~> 17.1, >= 17.1.1)
41
+ cucumber-wire (~> 6.2, >= 6.2.0)
49
42
  diff-lcs (~> 1.4, >= 1.4.4)
50
43
  mime-types (~> 3.3, >= 3.3.1)
51
44
  multi_test (~> 0.1, >= 0.1.2)
52
45
  sys-uname (~> 1.2, >= 1.2.2)
53
- cucumber-core (9.0.1)
54
- cucumber-gherkin (~> 18.1, >= 18.1.0)
55
- cucumber-messages (~> 15.0, >= 15.0.0)
56
- cucumber-tag-expressions (~> 3.0, >= 3.0.1)
57
- cucumber-create-meta (4.0.0)
58
- cucumber-messages (~> 15.0, >= 15.0.0)
46
+ cucumber-core (10.1.1)
47
+ cucumber-gherkin (~> 22.0, >= 22.0.0)
48
+ cucumber-messages (~> 17.1, >= 17.1.1)
49
+ cucumber-tag-expressions (~> 4.1, >= 4.1.0)
50
+ cucumber-create-meta (6.0.4)
51
+ cucumber-messages (~> 17.1, >= 17.1.1)
59
52
  sys-uname (~> 1.2, >= 1.2.2)
60
- cucumber-cucumber-expressions (12.1.1)
61
- cucumber-gherkin (18.1.1)
62
- cucumber-messages (~> 15.0, >= 15.0.0)
63
- cucumber-html-formatter (13.0.0)
64
- cucumber-messages (~> 15.0, >= 15.0.0)
65
- cucumber-messages (15.0.0)
66
- protobuf-cucumber (~> 3.10, >= 3.10.8)
67
- cucumber-tag-expressions (3.0.1)
68
- cucumber-wire (5.0.1)
69
- cucumber-core (~> 9.0, >= 9.0.1)
70
- cucumber-cucumber-expressions (~> 12.1, >= 12.1.1)
71
- cucumber-messages (~> 15.0, >= 15.0.0)
72
- diff-lcs (1.4.4)
73
- ecma-re-validator (0.3.0)
74
- regexp_parser (~> 2.0)
75
- ffi (1.15.3)
53
+ cucumber-cucumber-expressions (14.0.0)
54
+ cucumber-gherkin (22.0.0)
55
+ cucumber-messages (~> 17.1, >= 17.1.1)
56
+ cucumber-html-formatter (17.0.0)
57
+ cucumber-messages (~> 17.1, >= 17.1.0)
58
+ cucumber-messages (17.1.1)
59
+ cucumber-tag-expressions (4.1.0)
60
+ cucumber-wire (6.2.1)
61
+ cucumber-core (~> 10.1, >= 10.1.0)
62
+ cucumber-cucumber-expressions (~> 14.0, >= 14.0.0)
63
+ diff-lcs (1.5.0)
64
+ ecma-re-validator (0.4.0)
65
+ regexp_parser (~> 2.2)
66
+ ffi (1.15.5)
76
67
  fiber-local (1.0.0)
77
68
  hana (1.3.7)
78
- i18n (1.8.10)
79
- concurrent-ruby (~> 1.0)
80
69
  json_schemer (0.2.18)
81
70
  ecma-re-validator (~> 0.3)
82
71
  hana (~> 1.3)
83
72
  regexp_parser (~> 2.0)
84
73
  uri_template (~> 0.7)
85
- middleware (0.1.0)
86
- mime-types (3.3.1)
74
+ mime-types (3.4.1)
87
75
  mime-types-data (~> 3.2015)
88
- mime-types-data (3.2021.0225)
89
- minitest (5.14.4)
76
+ mime-types-data (3.2022.0105)
90
77
  multi_test (0.1.2)
91
78
  nio4r (2.5.8)
92
- protobuf-cucumber (3.10.8)
93
- activesupport (>= 3.2)
94
- middleware
95
- thor
96
- thread_safe
97
- rake (13.0.3)
79
+ rake (13.0.6)
98
80
  regexp_parser (2.2.0)
99
81
  rsmp_schemer (0.3.2)
100
82
  json_schemer (~> 0.2.18)
@@ -104,37 +86,33 @@ GEM
104
86
  rspec-mocks (~> 3.10.0)
105
87
  rspec-core (3.10.1)
106
88
  rspec-support (~> 3.10.0)
107
- rspec-expectations (3.10.1)
89
+ rspec-expectations (3.10.2)
108
90
  diff-lcs (>= 1.2.0, < 2.0)
109
91
  rspec-support (~> 3.10.0)
110
92
  rspec-mocks (3.10.2)
111
93
  diff-lcs (>= 1.2.0, < 2.0)
112
94
  rspec-support (~> 3.10.0)
113
- rspec-support (3.10.2)
95
+ rspec-support (3.10.3)
114
96
  sys-uname (1.2.2)
115
97
  ffi (~> 1.1)
116
- thor (1.0.1)
117
- thread_safe (0.3.6)
98
+ thor (1.2.1)
118
99
  timecop (0.9.4)
119
100
  timers (4.3.3)
120
- tzinfo (2.0.4)
121
- concurrent-ruby (~> 1.0)
122
101
  uri_template (0.7.0)
123
- zeitwerk (2.4.2)
124
102
 
125
103
  PLATFORMS
126
104
  x86_64-darwin-20
127
105
  x86_64-darwin-21
128
106
 
129
107
  DEPENDENCIES
130
- aruba (~> 1.1.2)
131
- bundler (~> 2.2.21)
132
- cucumber (~> 6.1.0)
133
- rake (~> 13.0.3)
108
+ aruba (~> 2.0.0)
109
+ bundler (~> 2.3.6)
110
+ cucumber (~> 7.1.0)
111
+ rake (~> 13.0.6)
134
112
  rsmp!
135
113
  rspec (~> 3.10.0)
136
- rspec-expectations (~> 3.10.1)
114
+ rspec-expectations (~> 3.10.2)
137
115
  timecop (~> 0.9.4)
138
116
 
139
117
  BUNDLED WITH
140
- 2.2.32
118
+ 2.3.6
data/config/tlc.yaml CHANGED
@@ -20,17 +20,18 @@ signal_plans:
20
20
  dynamic_bands:
21
21
  1: 0
22
22
  2: 5
23
- states:
24
- A1: '11NBBB'
25
- A2: '1NBBBB'
26
- B1: 'BBB11N'
27
- B2: 'BBB1NB'
28
- 2:
29
23
  states:
30
24
  A1: '111NBB'
31
25
  A2: '11NBBB'
32
26
  B1: 'BBB11N'
33
27
  B2: 'BBB1NB'
28
+ 2:
29
+ states:
30
+ A1: 'NNNNBB'
31
+ A2: 'NNNNBN'
32
+ B1: 'BBNNNN'
33
+ B2: 'BNNNNN'
34
+ startup_sequence: 'efg'
34
35
  intervals:
35
36
  timer: 0.1
36
37
  watchdog: 0.1
@@ -48,3 +49,4 @@ log:
48
49
  level: false
49
50
  debug: true
50
51
  json: true
52
+ live_output: tmp/tlc.state
@@ -157,7 +157,7 @@ task.wait # wait for collection task to complete (or time out)
157
157
  ```
158
158
 
159
159
  ### With collection
160
- If you provide `:collect` options, it will be used to construct a StatusUpdateCollector for collecting the relevant status messages. When collection completes the collector is returned in the `:collector` key:
160
+ If you provide `:collect` options, it will be used to construct a StatusCollector for collecting the relevant status messages. When collection completes the collector is returned in the `:collector` key:
161
161
 
162
162
  ```ruby
163
163
  options = {
@@ -6,8 +6,8 @@ module RSMP
6
6
  class Collector < Listener
7
7
  attr_reader :condition, :messages, :status, :error, :task
8
8
 
9
- def initialize proxy, options={}
10
- super proxy, options
9
+ def initialize notifier, options={}
10
+ super notifier, options
11
11
  @options = {
12
12
  cancel: {
13
13
  schema_error: true,
@@ -18,7 +18,15 @@ module RSMP
18
18
  @outgoing = options[:outgoing] == nil ? false : options[:outgoing]
19
19
  @condition = Async::Notification.new
20
20
  @title = options[:title] || [@options[:type]].flatten.join('/')
21
- @task = options[:task]
21
+ if options[:task]
22
+ @task = options[:task]
23
+ else
24
+ # if notifier is a Proxy, or some other object that implements task(),
25
+ # then try to get the task that way
26
+ if notifier.respond_to? 'task'
27
+ @task = notifier.task
28
+ end
29
+ end
22
30
  reset
23
31
  end
24
32
 
@@ -43,12 +51,12 @@ module RSMP
43
51
  @status == :collecting
44
52
  end
45
53
 
46
- # Is collection active?
54
+ # Is collection complete?
47
55
  def ok?
48
56
  @status == :ok
49
57
  end
50
58
 
51
- # Has collection time out?
59
+ # Has collection timed out?
52
60
  def timeout?
53
61
  @status == :timeout
54
62
  end
@@ -73,6 +81,13 @@ module RSMP
73
81
  @outgoing == true
74
82
  end
75
83
 
84
+ # if an errors caused collection to abort, then raise it
85
+ # return self, so this can be tucked on to calls that return a collector
86
+ def ok!
87
+ raise @error if @error
88
+ self
89
+ end
90
+
76
91
  # Collect message
77
92
  # Will return once all messages have been collected, or timeout is reached
78
93
  def collect &block
@@ -80,15 +95,14 @@ module RSMP
80
95
  wait
81
96
  @status
82
97
  ensure
83
- @notifier.remove_listener self
98
+ @notifier.remove_listener self if @notifier
84
99
  end
85
100
 
86
101
  # Collect message
87
102
  # Returns the collected messages, or raise an exception in case of a time out.
88
103
  def collect! &block
89
- if collect(&block) == :timeout
90
- raise RSMP::TimeoutError.new describe_progress
91
- end
104
+ collect(&block)
105
+ ok!
92
106
  @messages
93
107
  end
94
108
 
@@ -104,6 +118,7 @@ module RSMP
104
118
  end
105
119
  @status
106
120
  rescue Async::TimeoutError
121
+ @error = RSMP::TimeoutError.new describe_progress
107
122
  @status = :timeout
108
123
  end
109
124
 
@@ -112,7 +127,7 @@ module RSMP
112
127
  # If timeout is reached, an exceptioin is raised.
113
128
  def wait!
114
129
  wait
115
- raise RSMP::TimeoutError.new(describe_progress) if timeout?
130
+ raise @error if timeout?
116
131
  @messages
117
132
  end
118
133
 
@@ -151,28 +166,26 @@ module RSMP
151
166
  # Handle message. and return true when we're done collecting
152
167
  def notify message
153
168
  raise ArgumentError unless message
154
- raise RuntimeError.new("can't process message when done") unless ready? || collecting?
155
- unless reject_not_ack(message)
156
- perform_match message
157
- end
169
+ raise RuntimeError.new("can't process message when status is :#{@status}, title: #{@title}, desc: #{describe}") unless ready? || collecting?
170
+ perform_match message
158
171
  @status
159
172
  end
160
173
 
174
+ def describe
175
+ end
176
+
161
177
  # Match message against our collection criteria
162
178
  def perform_match message
163
- return unless type_match?(message)
179
+ return false if reject_not_ack(message)
180
+ return false unless type_match?(message)
164
181
  if @block
165
182
  status = [@block.call(message)].flatten
183
+ return unless collecting?
166
184
  keep message if status.include?(:keep)
167
- if status.include?(:cancel)
168
- cancel('Cancelled by block')
169
- else
170
- complete if done?
171
- end
172
185
  else
173
186
  keep message
174
- complete if done?
175
187
  end
188
+ complete if done?
176
189
  end
177
190
 
178
191
  # Have we collected the required number of messages?
@@ -194,8 +207,8 @@ module RSMP
194
207
  @condition.signal
195
208
  end
196
209
 
197
- # The proxy experienced some error.
198
- # Check if this should cause us to cancel.
210
+ # An error occured upstream.
211
+ # Check if we should cancel.
199
212
  def notify_error error, options={}
200
213
  case error
201
214
  when RSMP::SchemaError
@@ -224,7 +237,7 @@ module RSMP
224
237
  end
225
238
 
226
239
  # Abort collection
227
- def cancel error
240
+ def cancel error=nil
228
241
  @error = error
229
242
  @status = :cancelled
230
243
  do_stop
@@ -14,7 +14,7 @@ module RSMP
14
14
 
15
15
  # Get items, in our case the return values
16
16
  def get_items message
17
- message.attributes['rvs']
17
+ message.attributes['rvs'] || []
18
18
  end
19
19
  end
20
20
  end
@@ -0,0 +1,31 @@
1
+ module RSMP
2
+
3
+ # Filter messages based on type, direction and component id.
4
+ # Used by Collectors.
5
+ class Filter
6
+ def initialize ingoing:true, outgoing:true, type:, component:nil
7
+ @ingoing = ingoing
8
+ @outgoing = outgoing
9
+ @type = type
10
+ @component = component
11
+ end
12
+
13
+ # Check a message against our match criteria
14
+ # Return true if there's a match, false if not
15
+ def accept? message
16
+ return false if message.direction == :in && @ingoing == false
17
+ return false if message.direction == :out && @outgoing == false
18
+ if @type
19
+ if @type.is_a? Array
20
+ return false unless @type.include? message.type
21
+ else
22
+ return false unless message.type == @type
23
+ end
24
+ end
25
+ if @component
26
+ return false if message.attributes['cId'] && message.attributes['cId'] != @component
27
+ end
28
+ true
29
+ end
30
+ end
31
+ end
@@ -19,13 +19,5 @@ module RSMP
19
19
 
20
20
  def notify_error error, options={}
21
21
  end
22
-
23
- def listen &block
24
- @notifier.add_listener self
25
- yield
26
- ensure
27
- @notifier.remove_listener self
28
- end
29
-
30
22
  end
31
23
  end
@@ -8,26 +8,36 @@ module RSMP
8
8
  @want = want
9
9
  @got = nil
10
10
  @message = nil
11
- @done = false
12
11
  end
13
12
 
14
13
  # Are we done, i.e. did the last checked item match?
15
14
  def done?
16
- @done
15
+ @got != nil
17
16
  end
18
17
 
19
18
  # Check an item and set @done to true if it matches
20
19
  # Store the item and corresponding message if there's a positive or negative match
21
- def perform_match item, message
20
+ def perform_match item, message, block
22
21
  matched = match? item
23
22
  if matched != nil
24
- @message = message
25
- @got = item
26
- @done = matched
23
+ if block
24
+ status = block.call(nil,item)
25
+ matched = status if status == true || status == false
26
+ end
27
27
  end
28
28
  matched
29
29
  end
30
30
 
31
+ def keep message, item
32
+ @message = message
33
+ @got = item
34
+ end
35
+
36
+ def forget
37
+ @message = nil
38
+ @got = nil
39
+ end
40
+
31
41
  def match? item
32
42
  end
33
43
  end
@@ -61,7 +61,7 @@ module RSMP
61
61
 
62
62
  # Get messages from results
63
63
  def messages
64
- @queries.map { |query| query.message }.uniq
64
+ @queries.map { |query| query.message }.uniq.compact
65
65
  end
66
66
 
67
67
  # Return progress as completes queries vs. total number of queries
@@ -90,22 +90,33 @@ module RSMP
90
90
  # Check if a messages matches our criteria.
91
91
  # Match each query against each item in the message
92
92
  def perform_match message
93
- return unless type_match?(message)
93
+ return false if super(message) == false
94
+ return unless collecting?
94
95
  @queries.each do |query| # look through queries
95
96
  get_items(message).each do |item| # look through items in message
96
- matched = query.perform_match(item,message)
97
- if matched == true
98
- matched = @block.call(message,item) if @block
99
- end
97
+ matched = query.perform_match(item,message,@block)
98
+ return unless collecting?
100
99
  if matched != nil
101
100
  type = {true=>'match',false=>'mismatch'}[matched]
102
101
  @notifier.log "#{@title.capitalize} #{message.m_id_short} collect #{type} #{query.want}, item #{item}", level: :debug
103
- break
102
+ if matched == true
103
+ query.keep message, item
104
+ elsif matched == false
105
+ query.forget
106
+ end
104
107
  end
105
108
  end
106
109
  end
107
110
  complete if done?
108
111
  @notifier.log "#{@title.capitalize} collect reached #{summary}", level: :debug
109
112
  end
113
+
114
+ # don't collect anything. Query will collect them instead
115
+ def keep message
116
+ end
117
+
118
+ def describe
119
+ @queries.map {|q| q.want.to_s }
120
+ end
110
121
  end
111
122
  end
@@ -0,0 +1,20 @@
1
+ module RSMP
2
+ # Base class for waiting for status updates or responses
3
+ class StatusCollector < StateCollector
4
+ def initialize proxy, want, options={}
5
+ super proxy, want, options.merge(title: 'status response', type:['MessageNotAck'])
6
+
7
+ @options[:type] << 'StatusUpdate' unless options[:updates] == false
8
+ @options[:type] << 'StatusResponse' unless options[:reponses] == false
9
+ end
10
+
11
+ def build_query want
12
+ RSMP::StatusQuery.new want
13
+ end
14
+
15
+ # Get items, in our case status values
16
+ def get_items message
17
+ message.attributes['sS'] || []
18
+ end
19
+ end
20
+ end
data/lib/rsmp/node.rb CHANGED
@@ -15,7 +15,6 @@ module RSMP
15
15
  @clock = Clock.new
16
16
  @error_queue = Async::Queue.new
17
17
  @ignore_errors = []
18
- options[:collector]
19
18
  @collect = options[:collect]
20
19
  end
21
20
 
data/lib/rsmp/proxy.rb CHANGED
@@ -52,12 +52,6 @@ module RSMP
52
52
  node.clock
53
53
  end
54
54
 
55
- def collect options, &block
56
- collector = RSMP::Collector.new self, options.merge(task: @task)
57
- collector.collect &block
58
- collector
59
- end
60
-
61
55
  def run
62
56
  start
63
57
  @reader.wait if @reader
@@ -579,25 +573,34 @@ module RSMP
579
573
  end
580
574
 
581
575
  def wait_for_acknowledgement parent_task, options={}, m_id
582
- collect(parent_task,options.merge({
583
- type: ['MessageAck','MessageNotAck'],
584
- num: 1
585
- })) do |message|
576
+ collector = Collector.new self, options.merge(task: parent_task, type: ['MessageAck','MessageNotAck'])
577
+ collector.collect do |message|
586
578
  if message.is_a?(MessageNotAck)
587
579
  if message.attribute('oMId') == m_id
588
- # set result to an exception, but don't raise it.
589
- # this will be returned by the task and stored as the task result
590
- # when the parent task call wait() on the task, the exception
591
- # will be raised in the parent task, and caught by rspec.
592
- # rspec will then show the error and record the test as failed
593
580
  m_id_short = RSMP::Message.shorten_m_id m_id, 8
594
- result = RSMP::MessageRejected.new "Aggregated status request #{m_id_short} was rejected with '#{message.attribute('rea')}'"
595
- next true # done, no more messages wanted
581
+ raise RSMP::MessageRejected.new "Aggregated status request #{m_id_short} was rejected with '#{message.attribute('rea')}'"
596
582
  end
597
583
  elsif message.is_a?(MessageAck)
598
- next true if message.attribute('oMId') == m_id
584
+ collector.complete if message.attribute('oMId') == m_id
585
+ end
586
+ end
587
+ end
588
+
589
+ def send_and_optionally_collect message, options, &block
590
+ collect_options = options[:collect] || options[:collect!]
591
+ if collect_options
592
+ task = @task.async do |task|
593
+ collector = yield collect_options # call block to create collector
594
+ collector.collect
595
+ collector.ok! if options[:collect!] # raise any errors if the bang version was specified
596
+ collector
599
597
  end
600
- false
598
+
599
+ send_message message, validate: options[:validate]
600
+ { sent: message, collector: task.wait }
601
+ else
602
+ send_message message, validate: options[:validate]
603
+ return { sent: message }
601
604
  end
602
605
  end
603
606
  end
data/lib/rsmp/site.rb CHANGED
@@ -9,9 +9,9 @@ module RSMP
9
9
  attr_reader :rsmp_versions, :site_settings, :logger, :proxies
10
10
 
11
11
  def initialize options={}
12
+ super options
12
13
  initialize_components
13
14
  handle_site_settings options
14
- super options
15
15
  @proxies = []
16
16
  @sleep_condition = Async::Notification.new
17
17
  @proxies_condition = Async::Notification.new
@@ -95,7 +95,8 @@ module RSMP
95
95
  ip: supervisor_settings['ip'],
96
96
  port: supervisor_settings['port'],
97
97
  logger: @logger,
98
- archive: @archive
98
+ archive: @archive,
99
+ collect: @collect
99
100
  })
100
101
  @proxies << proxy
101
102
  @proxies_condition.signal