rsmp 0.1.12 → 0.1.27

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/rsmp/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module RSMP
2
- VERSION = "0.1.12"
2
+ VERSION = "0.1.27"
3
3
  end
data/lib/rsmp/wait.rb CHANGED
@@ -1,17 +1,16 @@
1
- # Helper for waiting for an Async condition using a block
2
-
3
1
  module RSMP
4
- class Wait
5
-
6
- def self.wait_for task, condition, timeout, &block
7
- task.with_timeout(timeout) do
8
- while task.running? do
2
+ module Wait
3
+ # wait for an async condition to signal, then yield to block
4
+ # if block returns true we're done. otherwise, wait again
5
+ def wait_for condition, timeout, &block
6
+ raise RuntimeError.new("Can't wait for condition because task is not running") unless @task.running?
7
+ @task.with_timeout(timeout) do
8
+ while @task.running? do
9
9
  value = condition.wait
10
10
  result = yield value
11
11
  return result if result # return result of check, if not nil
12
12
  end
13
13
  end
14
14
  end
15
-
16
15
  end
17
16
  end
data/rsmp.gemspec CHANGED
@@ -26,33 +26,21 @@ Gem::Specification.new do |spec|
26
26
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
27
27
  end
28
28
 
29
- # Add schema files in rsmp_schema submodule
30
- gem_dir = Pathname.new(__dir__).expand_path
31
- submodule_path = File.expand_path 'lib/rsmp_schema/schema'
32
- Dir.chdir(submodule_path) do
33
- submodule_relative_path = Pathname.new(submodule_path).relative_path_from(gem_dir)
34
- `git ls-files`.split($\).each do |filename|
35
- # for each git file, prepend relative submodule path and add to spec
36
- spec.files << submodule_relative_path.join(filename).to_s
37
- end
38
- end
39
-
40
29
  spec.bindir = "exe"
41
30
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
42
31
  spec.require_paths = ["lib"]
43
32
 
44
- spec.add_dependency "async", "~> 1.23.0"
45
- spec.add_dependency "async-io", "~> 1.27.1"
33
+ spec.add_dependency "async", "~> 1.28.7"
34
+ spec.add_dependency "async-io", "~> 1.30.2"
46
35
  spec.add_dependency "colorize", "~> 0.8.1"
47
- spec.add_dependency "thor", "~> 0.20.3"
48
- spec.add_dependency "json_schemer", "~> 0.2.8"
36
+ spec.add_dependency "thor", "~> 1.0.1"
37
+ spec.add_dependency "rsmp_schemer", "~> 0.2.0"
49
38
 
50
- spec.add_development_dependency "bundler", "~> 2.0"
51
- spec.add_development_dependency "rake", "~> 10.0"
52
- spec.add_development_dependency "rspec", "~> 3.0"
53
- spec.add_development_dependency "rspec-expectations", "~> 3.8.3"
54
- spec.add_development_dependency "rspec-with_params", "~> 0.2.0"
39
+ spec.add_development_dependency "bundler", "~> 2.2.3"
40
+ spec.add_development_dependency "rake", "~> 13.0.1"
41
+ spec.add_development_dependency "rspec", "~> 3.9.0"
42
+ spec.add_development_dependency "rspec-expectations", "~> 3.9.1"
55
43
  spec.add_development_dependency "timecop", "~> 0.9.1"
56
44
  spec.add_development_dependency "cucumber", "~> 3.1.2"
57
- spec.add_development_dependency "aruba", "~> 0.14.11"
45
+ spec.add_development_dependency "aruba", "~> 1.0.0"
58
46
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rsmp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.12
4
+ version: 0.1.27
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emil Tin
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-12-18 00:00:00.000000000 Z
11
+ date: 2021-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.23.0
19
+ version: 1.28.7
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.23.0
26
+ version: 1.28.7
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: async-io
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.27.1
33
+ version: 1.30.2
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.27.1
40
+ version: 1.30.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: colorize
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,98 +58,84 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.20.3
61
+ version: 1.0.1
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.20.3
68
+ version: 1.0.1
69
69
  - !ruby/object:Gem::Dependency
70
- name: json_schemer
70
+ name: rsmp_schemer
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.2.8
75
+ version: 0.2.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.2.8
82
+ version: 0.2.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: bundler
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '2.0'
89
+ version: 2.2.3
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '2.0'
96
+ version: 2.2.3
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rake
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '10.0'
103
+ version: 13.0.1
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '10.0'
110
+ version: 13.0.1
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rspec
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '3.0'
117
+ version: 3.9.0
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '3.0'
124
+ version: 3.9.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rspec-expectations
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: 3.8.3
131
+ version: 3.9.1
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: 3.8.3
139
- - !ruby/object:Gem::Dependency
140
- name: rspec-with_params
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: 0.2.0
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: 0.2.0
138
+ version: 3.9.1
153
139
  - !ruby/object:Gem::Dependency
154
140
  name: timecop
155
141
  requirement: !ruby/object:Gem::Requirement
@@ -184,14 +170,14 @@ dependencies:
184
170
  requirements:
185
171
  - - "~>"
186
172
  - !ruby/object:Gem::Version
187
- version: 0.14.11
173
+ version: 1.0.0
188
174
  type: :development
189
175
  prerelease: false
190
176
  version_requirements: !ruby/object:Gem::Requirement
191
177
  requirements:
192
178
  - - "~>"
193
179
  - !ruby/object:Gem::Version
194
- version: 0.14.11
180
+ version: 1.0.0
195
181
  description: Easy RSMP site and supervisor communication.
196
182
  email:
197
183
  - zf0f@kk.dk
@@ -213,126 +199,37 @@ files:
213
199
  - bin/setup
214
200
  - config/site.yaml
215
201
  - config/supervisor.yaml
202
+ - config/tlc.yaml
203
+ - documentation/classes_and_modules.md
204
+ - documentation/message_distribution.md
216
205
  - exe/rsmp
217
206
  - lib/rsmp.rb
218
207
  - lib/rsmp/alarm.rb
219
208
  - lib/rsmp/archive.rb
220
- - lib/rsmp/base.rb
221
209
  - lib/rsmp/cli.rb
210
+ - lib/rsmp/collector.rb
222
211
  - lib/rsmp/component.rb
212
+ - lib/rsmp/components.rb
213
+ - lib/rsmp/convert/export/json_schema.rb
214
+ - lib/rsmp/convert/import/yaml.rb
223
215
  - lib/rsmp/error.rb
216
+ - lib/rsmp/inspect.rb
217
+ - lib/rsmp/listener.rb
224
218
  - lib/rsmp/logger.rb
219
+ - lib/rsmp/logging.rb
225
220
  - lib/rsmp/message.rb
226
221
  - lib/rsmp/node.rb
227
- - lib/rsmp/probe.rb
228
- - lib/rsmp/probe_collection.rb
222
+ - lib/rsmp/notifier.rb
229
223
  - lib/rsmp/proxy.rb
230
224
  - lib/rsmp/rsmp.rb
231
225
  - lib/rsmp/site.rb
232
- - lib/rsmp/site_base.rb
233
226
  - lib/rsmp/site_proxy.rb
227
+ - lib/rsmp/site_proxy_wait.rb
234
228
  - lib/rsmp/supervisor.rb
235
- - lib/rsmp/supervisor_base.rb
236
229
  - lib/rsmp/supervisor_proxy.rb
230
+ - lib/rsmp/tlc.rb
237
231
  - lib/rsmp/version.rb
238
232
  - lib/rsmp/wait.rb
239
- - lib/rsmp_schema/schema/core/aggregated_status.json
240
- - lib/rsmp_schema/schema/core/alarm.json
241
- - lib/rsmp_schema/schema/core/command_request.json
242
- - lib/rsmp_schema/schema/core/command_response.json
243
- - lib/rsmp_schema/schema/core/core.json
244
- - lib/rsmp_schema/schema/core/definitions.json
245
- - lib/rsmp_schema/schema/core/message_ack.json
246
- - lib/rsmp_schema/schema/core/message_not_ack.json
247
- - lib/rsmp_schema/schema/core/rsmp.json
248
- - lib/rsmp_schema/schema/core/status.json
249
- - lib/rsmp_schema/schema/core/status_request.json
250
- - lib/rsmp_schema/schema/core/status_response.json
251
- - lib/rsmp_schema/schema/core/status_subscribe.json
252
- - lib/rsmp_schema/schema/core/status_unsubscribe.json
253
- - lib/rsmp_schema/schema/core/status_update.json
254
- - lib/rsmp_schema/schema/core/version.json
255
- - lib/rsmp_schema/schema/core/watchdog.json
256
- - lib/rsmp_schema/schema/tlc/alarms/A0001.json
257
- - lib/rsmp_schema/schema/tlc/alarms/A0002.json
258
- - lib/rsmp_schema/schema/tlc/alarms/A0003.json
259
- - lib/rsmp_schema/schema/tlc/alarms/A0004.json
260
- - lib/rsmp_schema/schema/tlc/alarms/A0005.json
261
- - lib/rsmp_schema/schema/tlc/alarms/A0006.json
262
- - lib/rsmp_schema/schema/tlc/alarms/A0007.json
263
- - lib/rsmp_schema/schema/tlc/alarms/A0008.json
264
- - lib/rsmp_schema/schema/tlc/alarms/A0009.json
265
- - lib/rsmp_schema/schema/tlc/alarms/A0101.json
266
- - lib/rsmp_schema/schema/tlc/alarms/A0201.json
267
- - lib/rsmp_schema/schema/tlc/alarms/A0202.json
268
- - lib/rsmp_schema/schema/tlc/alarms/A0301.json
269
- - lib/rsmp_schema/schema/tlc/alarms/A0302.json
270
- - lib/rsmp_schema/schema/tlc/alarms/alarms.json
271
- - lib/rsmp_schema/schema/tlc/commands/M0001.json
272
- - lib/rsmp_schema/schema/tlc/commands/M0002.json
273
- - lib/rsmp_schema/schema/tlc/commands/M0003.json
274
- - lib/rsmp_schema/schema/tlc/commands/M0004.json
275
- - lib/rsmp_schema/schema/tlc/commands/M0005.json
276
- - lib/rsmp_schema/schema/tlc/commands/M0006.json
277
- - lib/rsmp_schema/schema/tlc/commands/M0007.json
278
- - lib/rsmp_schema/schema/tlc/commands/M0008.json
279
- - lib/rsmp_schema/schema/tlc/commands/M0010.json
280
- - lib/rsmp_schema/schema/tlc/commands/M0011.json
281
- - lib/rsmp_schema/schema/tlc/commands/M0012.json
282
- - lib/rsmp_schema/schema/tlc/commands/M0013.json
283
- - lib/rsmp_schema/schema/tlc/commands/M0014.json
284
- - lib/rsmp_schema/schema/tlc/commands/M0015.json
285
- - lib/rsmp_schema/schema/tlc/commands/M0016.json
286
- - lib/rsmp_schema/schema/tlc/commands/M0017.json
287
- - lib/rsmp_schema/schema/tlc/commands/M0018.json
288
- - lib/rsmp_schema/schema/tlc/commands/M0019.json
289
- - lib/rsmp_schema/schema/tlc/commands/M0103.json
290
- - lib/rsmp_schema/schema/tlc/commands/command_requests.json
291
- - lib/rsmp_schema/schema/tlc/commands/command_responses.json
292
- - lib/rsmp_schema/schema/tlc/commands/commands.json
293
- - lib/rsmp_schema/schema/tlc/statuses/S0001.json
294
- - lib/rsmp_schema/schema/tlc/statuses/S0002.json
295
- - lib/rsmp_schema/schema/tlc/statuses/S0003.json
296
- - lib/rsmp_schema/schema/tlc/statuses/S0004.json
297
- - lib/rsmp_schema/schema/tlc/statuses/S0005.json
298
- - lib/rsmp_schema/schema/tlc/statuses/S0006.json
299
- - lib/rsmp_schema/schema/tlc/statuses/S0007.json
300
- - lib/rsmp_schema/schema/tlc/statuses/S0008.json
301
- - lib/rsmp_schema/schema/tlc/statuses/S0009.json
302
- - lib/rsmp_schema/schema/tlc/statuses/S0010.json
303
- - lib/rsmp_schema/schema/tlc/statuses/S0011.json
304
- - lib/rsmp_schema/schema/tlc/statuses/S0012.json
305
- - lib/rsmp_schema/schema/tlc/statuses/S0013.json
306
- - lib/rsmp_schema/schema/tlc/statuses/S0014.json
307
- - lib/rsmp_schema/schema/tlc/statuses/S0015.json
308
- - lib/rsmp_schema/schema/tlc/statuses/S0016.json
309
- - lib/rsmp_schema/schema/tlc/statuses/S0017.json
310
- - lib/rsmp_schema/schema/tlc/statuses/S0018.json
311
- - lib/rsmp_schema/schema/tlc/statuses/S0019.json
312
- - lib/rsmp_schema/schema/tlc/statuses/S0020.json
313
- - lib/rsmp_schema/schema/tlc/statuses/S0021.json
314
- - lib/rsmp_schema/schema/tlc/statuses/S0022.json
315
- - lib/rsmp_schema/schema/tlc/statuses/S0023.json
316
- - lib/rsmp_schema/schema/tlc/statuses/S0024.json
317
- - lib/rsmp_schema/schema/tlc/statuses/S0025.json
318
- - lib/rsmp_schema/schema/tlc/statuses/S0026.json
319
- - lib/rsmp_schema/schema/tlc/statuses/S0027.json
320
- - lib/rsmp_schema/schema/tlc/statuses/S0028.json
321
- - lib/rsmp_schema/schema/tlc/statuses/S0029.json
322
- - lib/rsmp_schema/schema/tlc/statuses/S0091.json
323
- - lib/rsmp_schema/schema/tlc/statuses/S0092.json
324
- - lib/rsmp_schema/schema/tlc/statuses/S0095.json
325
- - lib/rsmp_schema/schema/tlc/statuses/S0096.json
326
- - lib/rsmp_schema/schema/tlc/statuses/S0201.json
327
- - lib/rsmp_schema/schema/tlc/statuses/S0202.json
328
- - lib/rsmp_schema/schema/tlc/statuses/S0203.json
329
- - lib/rsmp_schema/schema/tlc/statuses/S0204.json
330
- - lib/rsmp_schema/schema/tlc/statuses/S0205.json
331
- - lib/rsmp_schema/schema/tlc/statuses/S0206.json
332
- - lib/rsmp_schema/schema/tlc/statuses/S0207.json
333
- - lib/rsmp_schema/schema/tlc/statuses/S0208.json
334
- - lib/rsmp_schema/schema/tlc/statuses/statuses.json
335
- - lib/rsmp_schema/schema/tlc/sxl.json
336
233
  - rsmp.gemspec
337
234
  homepage: https://github.com/rsmp-nordic/rsmp
338
235
  licenses:
@@ -342,7 +239,7 @@ metadata:
342
239
  source_code_uri: https://github.com/rsmp-nordic/rsmp
343
240
  changelog_uri: https://github.com/rsmp-nordic/rsmp/blob/master/CHANGELOG.md
344
241
  bug_tracker_uri: https://github.com/rsmp-nordic/rsmp/issues
345
- post_install_message:
242
+ post_install_message:
346
243
  rdoc_options: []
347
244
  require_paths:
348
245
  - lib
@@ -357,8 +254,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
357
254
  - !ruby/object:Gem::Version
358
255
  version: '0'
359
256
  requirements: []
360
- rubygems_version: 3.0.6
361
- signing_key:
257
+ rubygems_version: 3.2.3
258
+ signing_key:
362
259
  specification_version: 4
363
260
  summary: RoadSide Message Protocol (RSMP) library.
364
261
  test_files: []
data/lib/rsmp/probe.rb DELETED
@@ -1,114 +0,0 @@
1
- # A probe checks incoming messages and store matches
2
- # Once it has collected what it needs, it triggers a condition variable
3
- # and the client wakes up.
4
-
5
- module RSMP
6
- class Probe
7
- attr_reader :condition, :items, :done
8
-
9
- # block should send a message and return message just sent
10
- def self.collect_response proxy, options={}, &block
11
- from = proxy.archive.current_index
12
- sent = yield
13
- raise RuntimeError unless sent && sent[:message].is_a?(RSMP::Message)
14
- item = proxy.archive.capture(options.merge(from: from+1, num: 1, with_message: true)) do |item|
15
- ["CommandResponse","StatusResponse","MessageNotAck"].include?(item[:message].type)
16
- end
17
- if item
18
- item[:message]
19
- else
20
- nil
21
- end
22
- end
23
-
24
-
25
- def initialize archive
26
- raise ArgumentError.new("Archive expected") unless archive.is_a? Archive
27
- @archive = archive
28
- @items = []
29
- @condition = Async::Notification.new
30
- end
31
-
32
- def capture task, options={}, &block
33
- @options = options
34
- @block = block
35
- @num = options[:num]
36
-
37
- if options[:earliest]
38
- from = find_timestamp_index options[:earliest]
39
- backscan from
40
- elsif options[:from]
41
- backscan options[:from]
42
- end
43
-
44
- # if backscan didn't find enough items, then
45
- # insert ourself as probe and sleep until enough items are captured
46
- if @items.size < @num
47
- begin
48
- @archive.probes.add self
49
- task.with_timeout(options[:timeout]) do
50
- @condition.wait
51
- end
52
- ensure
53
- @archive.probes.remove self
54
- end
55
- end
56
-
57
- if @num == 1
58
- @items.first # if one item was requested, return item instead of array
59
- else
60
- @items[0..@num-1] # return array, but ensure we never return more than requested
61
- end
62
- end
63
-
64
- def find_timestamp_index earliest
65
- (0..@archive.items.size).bsearch do |i| # use binary search to find item index
66
- @archive.items[i][:timestamp] >= earliest
67
- end
68
- end
69
-
70
- def backscan from
71
- from.upto(@archive.items.size-1) do |i|
72
- return if process @archive.items[i]
73
- end
74
- end
75
-
76
- def reset
77
- @items.clear
78
- @done = false
79
- end
80
-
81
- def process item
82
- raise ArgumentError unless item
83
- return true if @done
84
- if matches? item
85
- @items << item
86
- if @num && @items.size >= @num
87
- @done = true
88
- @condition.signal
89
- return true
90
- end
91
- end
92
- false
93
- end
94
-
95
- def matches? item
96
- raise ArgumentError unless item
97
-
98
- if @options[:type]
99
- return false if item[:message] == nil
100
- if @options[:type].is_a? Array
101
- return false unless @options[:type].include? item[:message].type
102
- else
103
- return false unless item[:message].type == @options[:type]
104
- end
105
- end
106
- return if @options[:level] && item[:level] != @options[:level]
107
- return false if @options[:with_message] && !(item[:direction] && item[:message])
108
- if @block
109
- return false if @block.call(item) == false
110
- end
111
- true
112
- end
113
- end
114
- end