rsmp 0.31.0 → 0.32.2

Sign up to get free protection for your applications and to get access to all the features.
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.