rsmp 0.13.9 → 0.14.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '08492adc58ab046ad5b4ff844ce630aa3dba8962b768ec1787b4867c9d221a38'
4
- data.tar.gz: a3f3d1182268d14369bbca723b3bc72cc1969327a4e0c3a6c268f7e920b0b1bb
3
+ metadata.gz: 38e231d49b1f3b8bf84cd427c830817f1f029aad140feb5a41a254b3085e03cc
4
+ data.tar.gz: 3d7c432f63819f3fd76c9476fb8aee6ee3160c791031270124ef60e5c34921dd
5
5
  SHA512:
6
- metadata.gz: 3a1379ea993e6bb1bce084a27fd347db40859113b1d55cbfac6c175e9f66ba47b95aa1f2a41cdd933c4dcc2c0174a217861c13c88f3491b2e5c40bcb393cdcdb
7
- data.tar.gz: ed45664a849d801cb9ab385365653055349c4ce4138c701ff5bf3413f71289524fdac532bd14d1b2b6a6d06db964529cef5ac845343428eea061143a440e9f04
6
+ metadata.gz: 371f226083bca88553ca127e8228442cde2917c54995b57a472fa423339144806aaa3d6271d7f7d5c774f3b3c566ef842866806cce7e3633ed566a8b8a6f0f6f
7
+ data.tar.gz: f27787a527fc41626dd6903542bd03eb5fb12debee2bfa5e87d1635a965e27c4333d814b179ba937849c6f172b3dd7d0ae6d9e50fed62ef6e51131fc717cf4fc
data/Gemfile.lock CHANGED
@@ -1,11 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rsmp (0.13.9)
4
+ rsmp (0.14.2)
5
5
  async (~> 1.30.3)
6
6
  async-io (~> 1.33.0)
7
7
  colorize (~> 0.8.1)
8
- rsmp_schemer
8
+ rsmp_schema (~> 0.1.0)
9
9
  thor (~> 1.2.1)
10
10
 
11
11
  GEM
@@ -80,8 +80,9 @@ GEM
80
80
  nio4r (2.5.8)
81
81
  rake (13.0.6)
82
82
  regexp_parser (2.5.0)
83
- rsmp_schemer (0.4.2)
83
+ rsmp_schema (0.1.1)
84
84
  json_schemer (~> 0.2.21)
85
+ thor (~> 1.2.1)
85
86
  rspec (3.10.0)
86
87
  rspec-core (~> 3.10.0)
87
88
  rspec-expectations (~> 3.10.0)
data/lib/rsmp/cli.rb CHANGED
@@ -74,9 +74,9 @@ module RSMP
74
74
  end
75
75
  rescue Interrupt
76
76
  # cntr-c
77
- rescue RSMP::Schemer::UnknownSchemaTypeError => e
77
+ rescue RSMP::Schema::UnknownSchemaTypeError => e
78
78
  puts "Cannot start site: #{e}"
79
- rescue RSMP::Schemer::UnknownSchemaVersionError => e
79
+ rescue RSMP::Schema::UnknownSchemaVersionError => e
80
80
  puts "Cannot start site: #{e}"
81
81
  rescue Psych::SyntaxError => e
82
82
  puts "Cannot read config file #{e}"
@@ -25,6 +25,8 @@ module RSMP
25
25
  sCI, n, s, q = item['sCI'], item['n'], item['s'], item['q']
26
26
  uRt = subscription_list.dig(c_id,sCI,n,'uRt')
27
27
  next if uRt.to_i > 0
28
+ sOc = subscription_list.dig(c_id,sCI,n,'sOc')
29
+ next if sOc == 'False'
28
30
  next if @allow_repeat_updates[sCI] && @allow_repeat_updates[sCI].include?(n)
29
31
  new_values = {'s'=>s,'q'=>q}
30
32
  old_values = @statuses.dig(sCI,n)
@@ -31,9 +31,9 @@ module RSMP
31
31
  if item['list']
32
32
  case item['type']
33
33
  when "boolean"
34
- out["$ref"] = "../../core/definitions.json#/boolean_list"
34
+ out["$ref"] = "../../../core/3.1.1/definitions.json#/boolean_list"
35
35
  when "integer", "ordinal", "unit", "scale", "long"
36
- out["$ref"] = "../../core/definitions.json#/integer_list"
36
+ out["$ref"] = "../../../core/3.1.1/definitions.json#/integer_list"
37
37
  else
38
38
  raise "Error: List of #{item['type']} is not supported: #{item.inspect}"
39
39
  end
@@ -51,11 +51,11 @@ module RSMP
51
51
  when "string", "base64"
52
52
  out["type"] = "string"
53
53
  when "boolean"
54
- out["$ref"] = "../../core/definitions.json#/boolean"
54
+ out["$ref"] = "../../../core/3.1.1/definitions.json#/boolean"
55
55
  when "timestamp"
56
- out["$ref"] = "../../core/definitions.json#/timestamp"
56
+ out["$ref"] = "../../../core/3.1.1/definitions.json#/timestamp"
57
57
  when "integer", "ordinal", "unit", "scale", "long"
58
- out["$ref"] = "../../core/definitions.json#/integer"
58
+ out["$ref"] = "../../../core/3.1.1/definitions.json#/integer"
59
59
  else
60
60
  out["type"] = "string"
61
61
  end
@@ -153,9 +153,11 @@ module RSMP
153
153
  out["commands/#{key}.json"] = output_json json
154
154
  end
155
155
 
156
- def self.output_root out
156
+ def self.output_root out, meta
157
157
  json = {
158
- "description"=> "A schema validatating message against the RSMP SXL for Traffic Light Controllers",
158
+ "name"=> meta['name'],
159
+ "description"=> meta['description'],
160
+ "version"=> meta['version'],
159
161
  "allOf" => [
160
162
  {
161
163
  "if" => { "required" => ["type"], "properties" => { "type" => { "const" => "CommandRequest" }}},
@@ -180,7 +182,7 @@ module RSMP
180
182
 
181
183
  def self.generate sxl
182
184
  out = {}
183
- output_root out
185
+ output_root out, sxl[:meta]
184
186
  output_alarms out, sxl[:alarms]
185
187
  output_statuses out, sxl[:statuses]
186
188
  output_commands out, sxl[:commands]
@@ -19,15 +19,18 @@ module RSMP
19
19
 
20
20
  def self.convert yaml
21
21
  sxl = {
22
+ meta: {},
22
23
  alarms: {},
23
24
  statuses: {},
24
25
  commands: {}
25
26
  }
26
27
 
28
+ sxl[:meta] = yaml['meta']
29
+
27
30
  yaml['objects'].each_pair do |type,object|
28
- object["alarms"].each { |id,item| sxl[:alarms][id] = item }
29
- object["statuses"].each { |id,item| sxl[:statuses][id] = item }
30
- object["commands"].each { |id,item| sxl[:commands][id] = item }
31
+ object["alarms"].each { |id,item| sxl[:alarms][id] = item } if object["alarms"]
32
+ object["statuses"].each { |id,item| sxl[:statuses][id] = item } if object["statuses"]
33
+ object["commands"].each { |id,item| sxl[:commands][id] = item } if object["commands"]
31
34
  end
32
35
  sxl
33
36
  end
data/lib/rsmp/message.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'rsmp_schemer'
1
+ require 'rsmp_schema'
2
2
 
3
3
  # rsmp messages
4
4
  module RSMP
@@ -146,7 +146,7 @@ module RSMP
146
146
  end
147
147
 
148
148
  def validate schemas
149
- errors = RSMP::Schemer.validate attributes, schemas
149
+ errors = RSMP::Schema.validate attributes, schemas
150
150
  if errors
151
151
  error_string = errors.map {|item| item.reject {|e| e=='' } }.compact.join(', ').strip
152
152
  raise SchemaError.new error_string
data/lib/rsmp/proxy.rb CHANGED
@@ -230,7 +230,7 @@ module RSMP
230
230
  begin
231
231
  now = Clock.now
232
232
  timer(now)
233
- rescue RSMP::Schemer::Error => e
233
+ rescue RSMP::Schema::Error => e
234
234
  log "Timer: Schema error: #{e}", level: :warning
235
235
  rescue EOFError => e
236
236
  log "Timer: Connection closed: #{e}", level: :warning
@@ -319,7 +319,7 @@ module RSMP
319
319
  # TODO
320
320
  # what schema should we use to validate the intial Version and MessageAck messages?
321
321
  schemas = { core: '3.1.5' }
322
- schemas[sxl] = RSMP::Schemer.sanitize_version(sxl_version) if sxl && sxl_version
322
+ schemas[sxl] = RSMP::Schema.sanitize_version(sxl_version) if sxl && sxl_version
323
323
  schemas
324
324
  end
325
325
 
@@ -335,7 +335,7 @@ module RSMP
335
335
  log_send message, reason
336
336
  rescue EOFError, IOError
337
337
  buffer_message message
338
- rescue SchemaError, RSMP::Schemer::Error => e
338
+ rescue SchemaError, RSMP::Schema::Error => e
339
339
  str = "Could not send #{message.type} because schema validation failed: #{e.message}"
340
340
  log str, message: message, level: :error
341
341
  notify_error e.exception("#{str} #{message.json}")
@@ -398,7 +398,7 @@ module RSMP
398
398
  log str, message: Malformed.new(attributes), level: :warning
399
399
  # cannot send NotAcknowledged for a malformed message since we can't read it, just ignore it
400
400
  nil
401
- rescue SchemaError, RSMP::Schemer::Error => e
401
+ rescue SchemaError, RSMP::Schema::Error => e
402
402
  reason = "schema errors: #{e.message}"
403
403
  str = "Received invalid #{message.type}, #{reason}"
404
404
  log str, message: message, level: :warning
data/lib/rsmp/site.rb CHANGED
@@ -60,7 +60,7 @@ module RSMP
60
60
  def check_sxl_version
61
61
  sxl = @site_settings['sxl']
62
62
  version = @site_settings['sxl_version']
63
- RSMP::Schemer::find_schema! sxl, version, lenient: true
63
+ RSMP::Schema::find_schema! sxl, version, lenient: true
64
64
  end
65
65
 
66
66
  def run
@@ -47,7 +47,7 @@ module RSMP
47
47
 
48
48
  def handshake_complete
49
49
  super
50
- sanitized_sxl_version = RSMP::Schemer.sanitize_version(@site_sxl_version)
50
+ sanitized_sxl_version = RSMP::Schema.sanitize_version(@site_sxl_version)
51
51
  log "Connection to site #{@site_id} established, using core #{@rsmp_version}, #{@sxl} #{sanitized_sxl_version}", level: :log
52
52
  start_watchdog
53
53
  end
@@ -212,7 +212,7 @@ module RSMP
212
212
 
213
213
  # additional items can be used when verifying the response,
214
214
  # but must be removed from the subscribe message
215
- subscribe_list = status_list.map { |item| item.slice('sCI','n','uRt') }
215
+ subscribe_list = status_list.map { |item| item.slice('sCI','n','uRt','sOc') }
216
216
 
217
217
  # update our subcription list
218
218
  @status_subscriptions[component_id] ||= {}
@@ -220,9 +220,11 @@ module RSMP
220
220
  sCI = item["sCI"]
221
221
  n = item["n"]
222
222
  uRt = item["uRt"]
223
+ sOc = item["sOc"]
223
224
  @status_subscriptions[component_id][sCI] ||= {}
224
225
  @status_subscriptions[component_id][sCI][n] ||= {}
225
226
  @status_subscriptions[component_id][sCI][n]['uRt'] = uRt
227
+ @status_subscriptions[component_id][sCI][n]['sOc'] = sOc
226
228
  end
227
229
 
228
230
  component = find_component component_id
@@ -312,12 +314,12 @@ module RSMP
312
314
  # comes from the Version message send by the site
313
315
  type = 'tlc'
314
316
  version = message.attribute 'SXL'
315
- RSMP::Schemer::find_schema! type, version, lenient: true
317
+ RSMP::Schema::find_schema! type, version, lenient: true
316
318
 
317
319
  # store sxl version requested by site
318
320
  # TODO should check agaist site settings
319
321
  @site_sxl_version = message.attribute 'SXL'
320
- rescue RSMP::Schemer::UnknownSchemaError => e
322
+ rescue RSMP::Schema::UnknownSchemaError => e
321
323
  dont_acknowledge message, "Rejected #{message.type} message,", "#{e}"
322
324
  end
323
325
 
@@ -52,8 +52,8 @@ module RSMP
52
52
  unless sxl
53
53
  raise RSMP::ConfigurationError.new("Configuration error for site '#{site_id}': No SXL specified")
54
54
  end
55
- RSMP::Schemer.find_schemas! sxl if sxl
56
- rescue RSMP::Schemer::UnknownSchemaError => e
55
+ RSMP::Schema.find_schemas! sxl if sxl
56
+ rescue RSMP::Schema::UnknownSchemaError => e
57
57
  raise RSMP::ConfigurationError.new("Configuration error for site '#{site_id}': #{e}")
58
58
  end
59
59
  end
@@ -82,7 +82,7 @@ module RSMP
82
82
  end
83
83
 
84
84
  def handshake_complete
85
- sanitized_sxl_version = RSMP::Schemer.sanitize_version(sxl_version)
85
+ sanitized_sxl_version = RSMP::Schema.sanitize_version(sxl_version)
86
86
  log "Connection to supervisor established, using core #{@rsmp_version}, #{sxl} #{sanitized_sxl_version}", level: :info
87
87
  start_watchdog
88
88
  if @site_settings['send_after_connect']
data/lib/rsmp/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module RSMP
2
- VERSION = "0.13.9"
2
+ VERSION = "0.14.2"
3
3
  end
data/rsmp.gemspec CHANGED
@@ -34,7 +34,7 @@ Gem::Specification.new do |spec|
34
34
  spec.add_dependency "async-io", "~> 1.33.0"
35
35
  spec.add_dependency "colorize", "~> 0.8.1"
36
36
  spec.add_dependency "thor", "~> 1.2.1"
37
- spec.add_dependency "rsmp_schemer"
37
+ spec.add_dependency "rsmp_schema", "~> 0.1.0"
38
38
 
39
39
  spec.add_development_dependency "bundler", "~> 2.3.7"
40
40
  spec.add_development_dependency "rake", "~> 13.0.6"
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.13.9
4
+ version: 0.14.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emil Tin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-08-08 00:00:00.000000000 Z
11
+ date: 2022-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async
@@ -67,19 +67,19 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.2.1
69
69
  - !ruby/object:Gem::Dependency
70
- name: rsmp_schemer
70
+ name: rsmp_schema
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: 0.1.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'
82
+ version: 0.1.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: bundler
85
85
  requirement: !ruby/object:Gem::Requirement