rsmp 0.31.0 → 0.32.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: fd4daeeb9fb712ab275d4b0711a6ea69e766124a2fcd55ea955eeb1c46f05ed3
4
- data.tar.gz: a47c38c49b46fb2ad412ced388f6e654653292dd439ea31d2bbaf33988f024f0
3
+ metadata.gz: 25b1ee80906e4f8346ddd47e2541a1b3c535c2df0b1d534ff2fcf198ab0cae95
4
+ data.tar.gz: 0ed36d0bc9035d429a9fcdbae3de7208ec36801ba6ed703075229f2744940d0b
5
5
  SHA512:
6
- metadata.gz: ec4a4057b53a27d12e1c81af4623b03bcd7cf93b39bad72f1d228c1a0dfd74495541abae496a3fa783c159a16df2e161eb0f5fbaa13d96daa8d8c99a847a0f9f
7
- data.tar.gz: 704c11a6d854a0fb48f9cb6d84514ac40791bb85fe56186b9ff217e876458be6a214fbb69b8c3aaf09db35bd334345f7ca6ee31da8f9fbf717a3ae790e77252a
6
+ metadata.gz: 12384ded80fb0f30d9ac4d4a481249aee54be92d7b3efbdbcad80b435e4220d0add53430db0c05ee12a9d275c748b973e2b39e26f095766da33385479e9422c9
7
+ data.tar.gz: '079712e0c3b2ee6bb579ed71d99fff229d8a06e275080982c71e48ea0c4dbf1aa55bbdf0c1baca9229aa747007aac42a709668b705788cd6071565a7d9f520a3'
@@ -9,13 +9,11 @@ jobs:
9
9
  fail-fast: false
10
10
  matrix:
11
11
  os: [ubuntu-latest, macos-latest, windows-latest]
12
- # Due to https://github.com/actions/runner/issues/849, we have to use quotes
13
- ruby: ['3.3']
14
12
  runs-on: ${{ matrix.os }}
15
13
  steps:
16
14
  - uses: actions/checkout@v4
17
15
  - uses: ruby/setup-ruby@v1
18
16
  with:
19
- ruby-version: ${{ matrix.ruby }}
20
- bundler-cache: true # runs 'bundle install' and caches installed gems automatically
17
+ ruby-version: 3.3
18
+ bundler-cache: true
21
19
  - run: bundle exec rspec -f d
data/.tool-versions CHANGED
@@ -1 +1 @@
1
- ruby 3.3.2
1
+ ruby 3.3.5
data/Gemfile.lock CHANGED
@@ -1,11 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rsmp (0.31.0)
5
- async (~> 2.12.0)
6
- async-io (~> 1.43.0)
4
+ rsmp (0.32.2)
5
+ async (~> 2.16)
6
+ async-io (~> 1.43)
7
7
  colorize (~> 1.1)
8
- rsmp_schema (~> 0.7.0)
8
+ logger (~> 1.6)
9
+ ostruct (~> 0.6)
10
+ rsmp_schema (~> 0.7)
9
11
 
10
12
  GEM
11
13
  remote: https://rubygems.org/
@@ -16,8 +18,8 @@ GEM
16
18
  cucumber (>= 8.0, < 10.0)
17
19
  rspec-expectations (~> 3.4)
18
20
  thor (~> 1.0)
19
- async (2.12.1)
20
- console (~> 1.25, >= 1.25.2)
21
+ async (2.16.1)
22
+ console (~> 1.26)
21
23
  fiber-annotation
22
24
  io-event (~> 1.6, >= 1.6.5)
23
25
  async-io (1.43.2)
@@ -43,7 +45,7 @@ GEM
43
45
  multi_test (~> 1.1)
44
46
  sys-uname (~> 1.2)
45
47
  cucumber-ci-environment (10.0.1)
46
- cucumber-core (13.0.2)
48
+ cucumber-core (13.0.3)
47
49
  cucumber-gherkin (>= 27, < 28)
48
50
  cucumber-messages (>= 20, < 23)
49
51
  cucumber-tag-expressions (> 5, < 7)
@@ -51,16 +53,12 @@ GEM
51
53
  bigdecimal
52
54
  cucumber-gherkin (27.0.0)
53
55
  cucumber-messages (>= 19.1.4, < 23)
54
- cucumber-html-formatter (21.3.1)
55
- cucumber-messages (> 19, < 25)
56
+ cucumber-html-formatter (21.7.0)
57
+ cucumber-messages (> 19, < 27)
56
58
  cucumber-messages (22.0.0)
57
59
  cucumber-tag-expressions (6.1.0)
58
60
  diff-lcs (1.5.1)
59
61
  ffi (1.17.0)
60
- ffi (1.17.0-arm64-darwin)
61
- ffi (1.17.0-x64-mingw-ucrt)
62
- ffi (1.17.0-x86_64-darwin)
63
- ffi (1.17.0-x86_64-linux-gnu)
64
62
  fiber-annotation (0.2.0)
65
63
  fiber-local (1.1.0)
66
64
  fiber-storage
@@ -73,8 +71,10 @@ GEM
73
71
  hana (~> 1.3)
74
72
  regexp_parser (~> 2.0)
75
73
  simpleidn (~> 0.2)
74
+ logger (1.6.1)
76
75
  mini_mime (1.1.5)
77
76
  multi_test (1.1.0)
77
+ ostruct (0.6.0)
78
78
  rake (13.2.1)
79
79
  regexp_parser (2.9.2)
80
80
  rsmp_schema (0.7.0)
@@ -84,9 +84,9 @@ GEM
84
84
  rspec-core (~> 3.13.0)
85
85
  rspec-expectations (~> 3.13.0)
86
86
  rspec-mocks (~> 3.13.0)
87
- rspec-core (3.13.0)
87
+ rspec-core (3.13.1)
88
88
  rspec-support (~> 3.13.0)
89
- rspec-expectations (3.13.1)
89
+ rspec-expectations (3.13.2)
90
90
  diff-lcs (>= 1.2.0, < 2.0)
91
91
  rspec-support (~> 3.13.0)
92
92
  rspec-mocks (3.13.1)
@@ -96,7 +96,7 @@ GEM
96
96
  simpleidn (0.2.3)
97
97
  sys-uname (1.3.0)
98
98
  ffi (~> 1.1)
99
- thor (1.3.1)
99
+ thor (1.3.2)
100
100
  timecop (0.9.10)
101
101
 
102
102
  PLATFORMS
@@ -111,14 +111,14 @@ PLATFORMS
111
111
  x86_64-linux
112
112
 
113
113
  DEPENDENCIES
114
- aruba (~> 2.2.0)
115
- bundler (~> 2.5.7)
116
- cucumber (~> 9.2.0)
117
- rake (~> 13.2.0)
114
+ aruba (~> 2.2)
115
+ bundler (~> 2.5)
116
+ cucumber (~> 9.2)
117
+ rake (~> 13.2)
118
118
  rsmp!
119
- rspec (~> 3.13.0)
120
- rspec-expectations (~> 3.13.1)
121
- timecop (~> 0.9.9)
119
+ rspec (~> 3.13)
120
+ rspec-expectations (~> 3.13)
121
+ timecop (~> 0.9)
122
122
 
123
123
  BUNDLED WITH
124
- 2.5.11
124
+ 2.5.18
data/config/tlc.yaml CHANGED
@@ -2,7 +2,6 @@ site_id: RN+SI0001
2
2
  supervisors:
3
3
  - ip: 127.0.0.1
4
4
  port: 12111
5
- core_versions: '3.2.2'
6
5
  sxl: tlc
7
6
  sxl_version: '1.2.1'
8
7
  components:
data/lib/rsmp/cli.rb CHANGED
@@ -12,9 +12,10 @@ module RSMP
12
12
  method_option :config, :type => :string, :aliases => "-c", banner: 'Path to .yaml config file'
13
13
  method_option :id, :type => :string, :aliases => "-i", banner: 'RSMP site id'
14
14
  method_option :supervisors, :type => :string, :aliases => "-s", banner: 'ip:port,... list of supervisor to connect to'
15
+ method_option :core, :string => :string, banner: "Core version: [#{RSMP::Schema.core_versions.join(' ')}]", enum: RSMP::Schema.core_versions
16
+ method_option :type, :type => :string, :aliases => "-t", banner: 'Type of site: [tlc]', enum: ['tlc'], default: 'tlc'
15
17
  method_option :log, :type => :string, :aliases => "-l", banner: 'Path to log file'
16
18
  method_option :json, :type => :boolean, :aliases => "-j", banner: 'Show JSON messages in log'
17
- method_option :type, :type => :string, :aliases => "-t", banner: 'Type of site: [tlc]'
18
19
  def site
19
20
  settings = {}
20
21
  log_settings = { 'active' => true }
@@ -43,6 +44,20 @@ module RSMP
43
44
  end
44
45
  end
45
46
 
47
+ if options[:core]
48
+ settings['core_version'] = options[:core]
49
+ end
50
+
51
+ site_class = RSMP::Site
52
+ site_type = options[:type] || settings['type']
53
+ case site_type
54
+ when 'tlc'
55
+ site_class = RSMP::TLC::TrafficControllerSite
56
+ else
57
+ puts "Error: Unknown site type #{site_type}"
58
+ exit
59
+ end
60
+
46
61
  if options[:log]
47
62
  log_settings['path'] = options[:log]
48
63
  end
@@ -51,22 +66,25 @@ module RSMP
51
66
  log_settings['json'] = options[:json]
52
67
  end
53
68
 
54
- site_class = RSMP::Site
55
- if options[:type]
56
- case options[:type]
57
- when 'tlc'
58
- site_class = RSMP::TLC::TrafficControllerSite
59
- else
60
- site_class = RSMP::Site
61
- end
62
- end
63
69
  Async do |task|
64
70
  task.annotate 'cli'
65
71
  loop do
66
72
  begin
67
- site = site_class.new(site_settings:settings, log_settings: log_settings)
73
+ site = site_class.new(site_settings: settings, log_settings: log_settings)
68
74
  site.start
69
75
  site.wait
76
+ rescue Psych::SyntaxError => e
77
+ puts "Cannot read config file #{e}"
78
+ break
79
+ rescue RSMP::Schema::UnknownSchemaTypeError => e
80
+ puts "Cannot start site: #{e}"
81
+ break
82
+ rescue RSMP::Schema::UnknownSchemaVersionError => e
83
+ puts "Cannot start site: #{e}"
84
+ break
85
+ rescue RSMP::ConfigurationError => e
86
+ puts "Cannot start site: #{e}"
87
+ break
70
88
  rescue RSMP::Restart
71
89
  site.stop
72
90
  end
@@ -74,12 +92,6 @@ module RSMP
74
92
  end
75
93
  rescue Interrupt
76
94
  # cntr-c
77
- rescue RSMP::Schema::UnknownSchemaTypeError => e
78
- puts "Cannot start site: #{e}"
79
- rescue RSMP::Schema::UnknownSchemaVersionError => e
80
- puts "Cannot start site: #{e}"
81
- rescue Psych::SyntaxError => e
82
- puts "Cannot read config file #{e}"
83
95
  rescue Exception => e
84
96
  puts "Uncaught error: #{e}"
85
97
  puts caller.join("\n")
@@ -90,6 +102,7 @@ module RSMP
90
102
  method_option :id, :type => :string, :aliases => "-i", banner: 'RSMP site id'
91
103
  method_option :ip, :type => :numeric, banner: 'IP address to listen on'
92
104
  method_option :port, :type => :string, :aliases => "-p", banner: 'Port to listen on'
105
+ method_option :core, :string => :string, banner: "Core version: [#{RSMP::Schema.core_versions.join(' ')}]", enum: RSMP::Schema.core_versions
93
106
  method_option :log, :type => :string, :aliases => "-l", banner: 'Path to log file'
94
107
  method_option :json, :type => :boolean, :aliases => "-j", banner: 'Show JSON messages in log'
95
108
  def supervisor
@@ -118,6 +131,11 @@ module RSMP
118
131
  settings['port'] = options[:port]
119
132
  end
120
133
 
134
+ if options[:core]
135
+ settings['guest'] = {}
136
+ settings['guest']['core_version'] = options[:core]
137
+ end
138
+
121
139
  if options[:log]
122
140
  log_settings['path'] = options[:log]
123
141
  end
@@ -131,11 +149,17 @@ module RSMP
131
149
  supervisor = RSMP::Supervisor.new(supervisor_settings:settings,log_settings:log_settings)
132
150
  supervisor.start
133
151
  supervisor.wait
152
+ rescue Psych::SyntaxError => e
153
+ puts "Cannot read config file #{e}"
154
+ rescue RSMP::Schema::UnknownSchemaTypeError => e
155
+ puts "Cannot start supervisor: #{e}"
156
+ rescue RSMP::Schema::UnknownSchemaVersionError => e
157
+ puts "Cannot start supervisor: #{e}"
158
+ rescue RSMP::ConfigurationError => e
159
+ puts "Cannot start supervisor: #{e}"
134
160
  end
135
161
  rescue Interrupt
136
162
  # ctrl-c
137
- rescue RSMP::ConfigurationError => e
138
- puts "Cannot start supervisor: #{e}"
139
163
  end
140
164
 
141
165
  desc "convert", "Convert SXL from YAML to JSON Schema"
data/lib/rsmp/proxy.rb CHANGED
@@ -340,8 +340,8 @@ module RSMP
340
340
  schemas
341
341
  end
342
342
 
343
- def send_message message, reason=nil, validate: true
344
- raise NotReady unless connected?
343
+ def send_message message, reason=nil, validate: true, force: false
344
+ raise NotReady unless connected? unless force
345
345
  raise IOError unless @protocol
346
346
  message.direction = :out
347
347
  message.generate_json
@@ -474,9 +474,14 @@ module RSMP
474
474
  end
475
475
 
476
476
  def core_versions
477
- return [RSMP::Schema.latest_core_version] if @site_settings["core_versions"] == 'latest'
478
- return RSMP::Schema.core_versions if @site_settings["core_versions"] == 'all'
479
- [@site_settings["core_versions"]].flatten
477
+ version = @site_settings["core_version"]
478
+ if version == 'latest'
479
+ [RSMP::Schema.latest_core_version]
480
+ elsif version
481
+ [version]
482
+ else
483
+ RSMP::Schema.core_versions
484
+ end
480
485
  end
481
486
 
482
487
  def check_core_version message
@@ -486,7 +491,9 @@ module RSMP
486
491
  if candidates.any?
487
492
  @core_version = candidates.sort_by { |v| Gem::Version.new(v) }.last # pick latest version
488
493
  else
489
- raise HandshakeError.new "RSMP versions [#{message.versions.join(',')}] requested, but only [#{versions.join(',')}] supported."
494
+ reason = "RSMP versions [#{message.versions.join(', ')}] requested, but only [#{versions.join(', ')}] supported."
495
+ dont_acknowledge message, "Version message rejected", reason, force: true
496
+ raise HandshakeError.new reason
490
497
  end
491
498
  end
492
499
 
@@ -501,7 +508,7 @@ module RSMP
501
508
  check_ingoing_acknowledged original
502
509
  end
503
510
 
504
- def dont_acknowledge original, prefix=nil, reason=nil
511
+ def dont_acknowledge original, prefix=nil, reason=nil, force: true
505
512
  raise InvalidArgument unless original
506
513
  str = [prefix,reason].join(' ')
507
514
  log str, message: original, level: :warning if reason
@@ -510,7 +517,7 @@ module RSMP
510
517
  "rea" => reason || "Unknown reason"
511
518
  })
512
519
  message.original = original.clone
513
- send_message message, "for #{original.type} #{original.m_id_short}"
520
+ send_message message, "for #{original.type} #{original.m_id_short}", force: force
514
521
  end
515
522
 
516
523
  def wait_for_state state, timeout:
data/lib/rsmp/site.rb CHANGED
@@ -6,7 +6,7 @@ module RSMP
6
6
  class Site < Node
7
7
  include Components
8
8
 
9
- attr_reader :core_versions, :site_settings, :logger, :proxies
9
+ attr_reader :core_version, :site_settings, :logger, :proxies
10
10
 
11
11
  def initialize options={}
12
12
  super options
@@ -32,7 +32,6 @@ module RSMP
32
32
  'supervisors' => [
33
33
  { 'ip' => '127.0.0.1', 'port' => 12111 }
34
34
  ],
35
- 'core_versions' => 'all',
36
35
  'sxl' => 'tlc',
37
36
  'sxl_version' => RSMP::Schema.latest_version(:tlc),
38
37
  'intervals' => {
@@ -57,7 +56,9 @@ module RSMP
57
56
  end
58
57
 
59
58
  @site_settings = defaults.deep_merge options[:site_settings]
59
+
60
60
  check_sxl_version
61
+ check_core_versions
61
62
  setup_components @site_settings['components']
62
63
  end
63
64
 
@@ -67,10 +68,33 @@ module RSMP
67
68
  RSMP::Schema::find_schema! sxl, version, lenient: true
68
69
  end
69
70
 
71
+ def check_core_versions
72
+ version = @site_settings['core_version']
73
+ return unless version
74
+ unless RSMP::Schema::core_versions.include? version
75
+ error_str = "Unknown core version: #{version}"
76
+ raise RSMP::ConfigurationError.new(error_str)
77
+ end
78
+ end
79
+
80
+ def site_type_name
81
+ "site"
82
+ end
83
+
84
+ def log_site_starting
85
+ log "Starting #{site_type_name} #{@site_settings["site_id"]}", level: :info, timestamp: @clock.now
86
+ sxl = "Using #{@site_settings["sxl"]} sxl #{@site_settings["sxl_version"]}"
87
+ version = @site_settings["core_version"]
88
+ unless version
89
+ core = "accepting all core versions [#{RSMP::Schema.core_versions.join(', ')}]"
90
+ else
91
+ core = "accepting only core version #{version}"
92
+ end
93
+ log "#{sxl}, #{core}", level: :info, timestamp: @clock.now
94
+ end
95
+
70
96
  def run
71
- log "Starting site #{@site_settings["site_id"]}",
72
- level: :info,
73
- timestamp: @clock.now
97
+ log_site_starting
74
98
  @proxies.each { |proxy| proxy.start }
75
99
  @proxies.each { |proxy| proxy.wait }
76
100
  end
@@ -4,7 +4,7 @@
4
4
 
5
5
  module RSMP
6
6
  class Supervisor < Node
7
- attr_reader :core_versions, :site_id, :supervisor_settings, :proxies, :logger
7
+ attr_reader :core_version, :site_id, :supervisor_settings, :proxies, :logger
8
8
 
9
9
  def initialize options={}
10
10
  handle_supervisor_settings( options[:supervisor_settings] || {} )
@@ -22,7 +22,6 @@ module RSMP
22
22
  'port' => 12111,
23
23
  'ips' => 'all',
24
24
  'guest' => {
25
- 'core_versions' => 'all',
26
25
  'sxl' => 'tlc',
27
26
  'intervals' => {
28
27
  'timer' => 1,
@@ -37,7 +36,7 @@ module RSMP
37
36
 
38
37
  # merge options into defaults
39
38
  @supervisor_settings = defaults.deep_merge(supervisor_settings)
40
- @core_versions = @supervisor_settings["guest"]["core_versions"]
39
+ @core_version = @supervisor_settings["guest"]["core_version"]
41
40
  check_site_sxl_types
42
41
  end
43
42
 
@@ -94,7 +93,7 @@ module RSMP
94
93
  else
95
94
  reject_connection socket, info
96
95
  end
97
- rescue ConnectionError => e
96
+ rescue ConnectionError, HandshakeError => e
98
97
  log "Rejected connection from #{remote_ip}:#{remote_port}, #{e.to_s}", level: :warning
99
98
  distribute_error e
100
99
  rescue StandardError => e
@@ -43,7 +43,7 @@ module RSMP
43
43
  end
44
44
 
45
45
  def start_handshake
46
- send_version @site_settings['site_id'], @site_settings["core_versions"]
46
+ send_version @site_settings['site_id'], core_versions
47
47
  end
48
48
 
49
49
  # connect to the supervisor and initiate handshake supervisor
@@ -15,7 +15,7 @@ module RSMP
15
15
  @signal_groups = []
16
16
  @detector_logics = []
17
17
  @plans = signal_plans
18
- @cycle_time = cycle_time
18
+ @cycle_time = cycle_time || 10
19
19
  @num_traffic_situations = 1
20
20
 
21
21
  if inputs
@@ -408,7 +408,7 @@ module RSMP
408
408
 
409
409
  def find_plan plan_nr
410
410
  plan = @plans[plan_nr.to_i]
411
- raise InvalidMessage.new "unknown signal plan #{plan_nr}, known only [#{@plans.keys.join(',')}]" unless plan
411
+ raise InvalidMessage.new "unknown signal plan #{plan_nr}, known only [#{@plans.keys.join(', ')}]" unless plan
412
412
  plan
413
413
  end
414
414
 
@@ -18,7 +18,10 @@ module RSMP
18
18
  unless main
19
19
  raise ConfigurationError.new "TLC must have a main component"
20
20
  end
21
+ end
21
22
 
23
+ def site_type_name
24
+ "TLC"
22
25
  end
23
26
 
24
27
  def start
data/lib/rsmp/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module RSMP
2
- VERSION = "0.31.0"
2
+ VERSION = "0.32.2"
3
3
  end
data/rsmp.gemspec CHANGED
@@ -30,16 +30,18 @@ Gem::Specification.new do |spec|
30
30
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
31
  spec.require_paths = ["lib"]
32
32
 
33
- spec.add_dependency "async", "~> 2.12.0"
34
- spec.add_dependency "async-io", "~> 1.43.0"
33
+ spec.add_dependency "logger", "~> 1.6"
34
+ spec.add_dependency "ostruct", "~> 0.6"
35
+ spec.add_dependency "async", "~> 2.16"
36
+ spec.add_dependency "async-io", "~> 1.43"
35
37
  spec.add_dependency "colorize", "~> 1.1"
36
- spec.add_dependency "rsmp_schema", "~> 0.7.0"
38
+ spec.add_dependency "rsmp_schema", "~> 0.7"
37
39
 
38
- spec.add_development_dependency "bundler", "~> 2.5.7"
39
- spec.add_development_dependency "rake", "~> 13.2.0"
40
- spec.add_development_dependency "rspec", "~> 3.13.0"
41
- spec.add_development_dependency "rspec-expectations", "~> 3.13.1"
42
- spec.add_development_dependency "timecop", "~> 0.9.9"
43
- spec.add_development_dependency "cucumber", "~> 9.2.0"
44
- spec.add_development_dependency "aruba" , "~> 2.2.0"
40
+ spec.add_development_dependency "bundler", "~> 2.5"
41
+ spec.add_development_dependency "rake", "~> 13.2"
42
+ spec.add_development_dependency "rspec", "~> 3.13"
43
+ spec.add_development_dependency "rspec-expectations", "~> 3.13"
44
+ spec.add_development_dependency "timecop", "~> 0.9"
45
+ spec.add_development_dependency "cucumber", "~> 9.2"
46
+ spec.add_development_dependency "aruba" , "~> 2.2"
45
47
  end
metadata CHANGED
@@ -1,43 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rsmp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.31.0
4
+ version: 0.32.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: 2024-08-23 00:00:00.000000000 Z
11
+ date: 2024-09-05 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: logger
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: ostruct
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.6'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.6'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: async
15
43
  requirement: !ruby/object:Gem::Requirement
16
44
  requirements:
17
45
  - - "~>"
18
46
  - !ruby/object:Gem::Version
19
- version: 2.12.0
47
+ version: '2.16'
20
48
  type: :runtime
21
49
  prerelease: false
22
50
  version_requirements: !ruby/object:Gem::Requirement
23
51
  requirements:
24
52
  - - "~>"
25
53
  - !ruby/object:Gem::Version
26
- version: 2.12.0
54
+ version: '2.16'
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: async-io
29
57
  requirement: !ruby/object:Gem::Requirement
30
58
  requirements:
31
59
  - - "~>"
32
60
  - !ruby/object:Gem::Version
33
- version: 1.43.0
61
+ version: '1.43'
34
62
  type: :runtime
35
63
  prerelease: false
36
64
  version_requirements: !ruby/object:Gem::Requirement
37
65
  requirements:
38
66
  - - "~>"
39
67
  - !ruby/object:Gem::Version
40
- version: 1.43.0
68
+ version: '1.43'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: colorize
43
71
  requirement: !ruby/object:Gem::Requirement
@@ -58,112 +86,112 @@ dependencies:
58
86
  requirements:
59
87
  - - "~>"
60
88
  - !ruby/object:Gem::Version
61
- version: 0.7.0
89
+ version: '0.7'
62
90
  type: :runtime
63
91
  prerelease: false
64
92
  version_requirements: !ruby/object:Gem::Requirement
65
93
  requirements:
66
94
  - - "~>"
67
95
  - !ruby/object:Gem::Version
68
- version: 0.7.0
96
+ version: '0.7'
69
97
  - !ruby/object:Gem::Dependency
70
98
  name: bundler
71
99
  requirement: !ruby/object:Gem::Requirement
72
100
  requirements:
73
101
  - - "~>"
74
102
  - !ruby/object:Gem::Version
75
- version: 2.5.7
103
+ version: '2.5'
76
104
  type: :development
77
105
  prerelease: false
78
106
  version_requirements: !ruby/object:Gem::Requirement
79
107
  requirements:
80
108
  - - "~>"
81
109
  - !ruby/object:Gem::Version
82
- version: 2.5.7
110
+ version: '2.5'
83
111
  - !ruby/object:Gem::Dependency
84
112
  name: rake
85
113
  requirement: !ruby/object:Gem::Requirement
86
114
  requirements:
87
115
  - - "~>"
88
116
  - !ruby/object:Gem::Version
89
- version: 13.2.0
117
+ version: '13.2'
90
118
  type: :development
91
119
  prerelease: false
92
120
  version_requirements: !ruby/object:Gem::Requirement
93
121
  requirements:
94
122
  - - "~>"
95
123
  - !ruby/object:Gem::Version
96
- version: 13.2.0
124
+ version: '13.2'
97
125
  - !ruby/object:Gem::Dependency
98
126
  name: rspec
99
127
  requirement: !ruby/object:Gem::Requirement
100
128
  requirements:
101
129
  - - "~>"
102
130
  - !ruby/object:Gem::Version
103
- version: 3.13.0
131
+ version: '3.13'
104
132
  type: :development
105
133
  prerelease: false
106
134
  version_requirements: !ruby/object:Gem::Requirement
107
135
  requirements:
108
136
  - - "~>"
109
137
  - !ruby/object:Gem::Version
110
- version: 3.13.0
138
+ version: '3.13'
111
139
  - !ruby/object:Gem::Dependency
112
140
  name: rspec-expectations
113
141
  requirement: !ruby/object:Gem::Requirement
114
142
  requirements:
115
143
  - - "~>"
116
144
  - !ruby/object:Gem::Version
117
- version: 3.13.1
145
+ version: '3.13'
118
146
  type: :development
119
147
  prerelease: false
120
148
  version_requirements: !ruby/object:Gem::Requirement
121
149
  requirements:
122
150
  - - "~>"
123
151
  - !ruby/object:Gem::Version
124
- version: 3.13.1
152
+ version: '3.13'
125
153
  - !ruby/object:Gem::Dependency
126
154
  name: timecop
127
155
  requirement: !ruby/object:Gem::Requirement
128
156
  requirements:
129
157
  - - "~>"
130
158
  - !ruby/object:Gem::Version
131
- version: 0.9.9
159
+ version: '0.9'
132
160
  type: :development
133
161
  prerelease: false
134
162
  version_requirements: !ruby/object:Gem::Requirement
135
163
  requirements:
136
164
  - - "~>"
137
165
  - !ruby/object:Gem::Version
138
- version: 0.9.9
166
+ version: '0.9'
139
167
  - !ruby/object:Gem::Dependency
140
168
  name: cucumber
141
169
  requirement: !ruby/object:Gem::Requirement
142
170
  requirements:
143
171
  - - "~>"
144
172
  - !ruby/object:Gem::Version
145
- version: 9.2.0
173
+ version: '9.2'
146
174
  type: :development
147
175
  prerelease: false
148
176
  version_requirements: !ruby/object:Gem::Requirement
149
177
  requirements:
150
178
  - - "~>"
151
179
  - !ruby/object:Gem::Version
152
- version: 9.2.0
180
+ version: '9.2'
153
181
  - !ruby/object:Gem::Dependency
154
182
  name: aruba
155
183
  requirement: !ruby/object:Gem::Requirement
156
184
  requirements:
157
185
  - - "~>"
158
186
  - !ruby/object:Gem::Version
159
- version: 2.2.0
187
+ version: '2.2'
160
188
  type: :development
161
189
  prerelease: false
162
190
  version_requirements: !ruby/object:Gem::Requirement
163
191
  requirements:
164
192
  - - "~>"
165
193
  - !ruby/object:Gem::Version
166
- version: 2.2.0
194
+ version: '2.2'
167
195
  description: Easy RSMP site and supervisor communication.
168
196
  email:
169
197
  - zf0f@kk.dk
@@ -265,7 +293,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
265
293
  - !ruby/object:Gem::Version
266
294
  version: '0'
267
295
  requirements: []
268
- rubygems_version: 3.5.9
296
+ rubygems_version: 3.5.16
269
297
  signing_key:
270
298
  specification_version: 4
271
299
  summary: RoadSide Message Protocol (RSMP) library.