rsmp 0.17.3 → 0.18.0

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: 4b0fd1e980fcbbcccc0b302debbd6e128291dce874fc64f71f0ad5227bf387d9
4
- data.tar.gz: 72172bb7a553ab5d411222de6fce9bb43f4e3754765bb122642c59b5b59a994b
3
+ metadata.gz: 617db976cf78abbb1d4bbae2e31ba58863d21f9ef9df8f912cf84eb093a6de7d
4
+ data.tar.gz: 056310e524601423385b17156276ff1dac127594106db24832b8368134a8c843
5
5
  SHA512:
6
- metadata.gz: 3835c19f22d51abb95076f53374b4d78fd7a583a7984695a72e4ef7ea35cdf0168b4312cf1361c03cdbb5b8c9e9141a0041a792ab754adc9010b6893dd4d7afe
7
- data.tar.gz: db8ac3294d90673d21b2a4e59e937452dddbb9eed3a7102981e115086ffc6c74b3ac8ff50c1267f0e4a68b31f45786bfe840b0ef155e80ccc20e8a0fade029d9
6
+ metadata.gz: c73d30a792e3b00c99f695ac4a686aa8b67b627b184a0abcc5c14d6f2c2495755490b581de792774e58fb524d82e30bb51a32eb6aa570be2484bba26f682437a
7
+ data.tar.gz: 350ae202e67dd8f51ce478321af030d578b9134bdb659510740e9ab48a9aaa549a528e1c223717af8f21044e9d5aa08fe59a8bc8f08871b2059fa72bc4bf8738
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rsmp (0.17.3)
4
+ rsmp (0.18.0)
5
5
  async (~> 1.30.3)
6
6
  async-io (~> 1.33.0)
7
7
  colorize (~> 0.8.1)
@@ -79,7 +79,7 @@ GEM
79
79
  multi_test (0.1.2)
80
80
  nio4r (2.5.9)
81
81
  rake (13.0.6)
82
- regexp_parser (2.7.0)
82
+ regexp_parser (2.8.0)
83
83
  rsmp_schema (0.4.0)
84
84
  json_schemer (~> 0.2.21)
85
85
  thor (~> 1.2.1)
@@ -30,6 +30,13 @@ module RSMP
30
30
  'rvs' => rvs
31
31
  }
32
32
  end
33
+
34
+ def acknowledge
35
+ change, @acknowledged = !@acknowledged, true
36
+ update_timestamp if change
37
+ change
38
+ end
39
+
33
40
  def suspend
34
41
  change, @suspended = !@suspended, true
35
42
  update_timestamp if change
@@ -13,6 +13,16 @@ module RSMP
13
13
  raise UnknownStatus.new "Status #{status_code}/#{status_name} not implemented by #{self.class}"
14
14
  end
15
15
 
16
+ def acknowledge_alarm alarm_code
17
+ alarm = get_alarm_state alarm_code
18
+ if alarm.acknowledge
19
+ log "Acknowledging alarm #{alarm_code}", level: :info
20
+ @node.alarm_acknowledged alarm
21
+ else
22
+ log "Alarm #{alarm_code} already acknowledged", level: :info
23
+ end
24
+ end
25
+
16
26
  def suspend_alarm alarm_code
17
27
  alarm = get_alarm_state alarm_code
18
28
  if alarm.suspend
data/lib/rsmp/site.rb CHANGED
@@ -96,6 +96,11 @@ module RSMP
96
96
  end
97
97
  end
98
98
 
99
+ def alarm_acknowledged alarm_state
100
+ alarm = AlarmIssue.new( alarm_state.to_hash.merge('aSp' => 'Issue') )
101
+ send_alarm alarm
102
+ end
103
+
99
104
  def alarm_suspended_or_resumed alarm_state
100
105
  alarm = AlarmIssue.new( alarm_state.to_hash.merge('aSp' => 'Suspend') )
101
106
  send_alarm alarm
@@ -70,10 +70,13 @@ module RSMP
70
70
  # Async::IO::Endpoint#connect renames the current task. run in a subtask to avoid this see issue #22
71
71
  @task.async do |task|
72
72
  task.annotate 'socket task'
73
- # this timeout is a workaround for #connect hanging on windows if the other side is not present yet
74
- task.with_timeout 1.1 do
73
+ # this timeout is a workaround for connect hanging on windows if the other side is not present yet
74
+ timeout = @site_settings.dig('timeouts','connect') || 1.1
75
+ task.with_timeout timeout do
75
76
  @socket = @endpoint.connect
76
77
  end
78
+ delay = @site_settings.dig('intervals','after_connect')
79
+ task.sleep delay if delay
77
80
  end.wait
78
81
 
79
82
  @stream = Async::IO::Stream.new(@socket)
@@ -207,6 +210,16 @@ module RSMP
207
210
  end
208
211
  end
209
212
 
213
+ # handle incoming alarm acknowledge
214
+ def handle_alarm_acknowledge message
215
+ component_id = message.attributes["cId"]
216
+ component = @site.find_component component_id
217
+ alarm_code = message.attribute("aCId")
218
+ log "Received #{message.type} #{alarm_code} acknowledgement", message: message, level: :log
219
+ acknowledge message
220
+ component.acknowledge_alarm alarm_code
221
+ end
222
+
210
223
  # handle incoming alarm suspend
211
224
  def handle_alarm_suspend message
212
225
  component_id = message.attributes["cId"]
data/lib/rsmp/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module RSMP
2
- VERSION = "0.17.3"
2
+ VERSION = "0.18.0"
3
3
  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.17.3
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emil Tin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-04-14 00:00:00.000000000 Z
11
+ date: 2023-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async