crabfarm 0.0.14 → 0.0.15

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
  SHA1:
3
- metadata.gz: 5ffa69cbe5f984ef8f3d348bcec410f1676f8409
4
- data.tar.gz: 9f496ef1a4bd75caa56fac8c26ef24b69a284acc
3
+ metadata.gz: f9c3775845087acaaa1cc6a8ba773a034d52e8ed
4
+ data.tar.gz: 78156359fc8d036ad54a591be1923ac96eb5aa72
5
5
  SHA512:
6
- metadata.gz: 976296a79fa1281b7415ec823b9e4c1e8c01d8f9280d13f382c507cba69f64a26c508f0bd9fccae7eb4d377101066cc66b33673939eb04e6133d33591658d468
7
- data.tar.gz: 6d0cca01d8dc9bef52d888c72f6af1a3e623f14df75913b16c946db9fa86d67f9a3d883fec7c85eef30ff80f10e529e1a20f819f4bad76ba3383db99cd47bdff
6
+ metadata.gz: f4aa1971119f25c19a1bae8f606464cc20e0025a02b02ea960749b22ed3602acb6d69b4a58dfa4af18851ecfacba528646b2fc0c6bb4cd8b0c8a8239bd6f9f07
7
+ data.tar.gz: d7ecd4359f474d94b109a62b48f35e2af394d3aa0aad62e27d8ef6ac3f00f99037897c56f68fc285470dfa72c14246f3d6e1219d9be71efd05a470bb54950c4f
@@ -5,17 +5,36 @@ module Crabfarm
5
5
  module Engines
6
6
  class SafeStateLoop
7
7
 
8
+ class LoopAbortedException < StandardError; end
9
+
8
10
  def initialize
9
- @running = true
10
11
  @working = false
11
12
  @fatal = nil
12
13
  @lock = Mutex.new
13
- @thread = Thread.new { crawl_loop }
14
14
  end
15
15
 
16
- def release
17
- @running = false
18
- @thread.join
16
+ def start
17
+ @lock.synchronize {
18
+ if @thread.nil?
19
+ @fatal = nil
20
+ @thread = Thread.new { crawl_loop }
21
+ end
22
+ }
23
+ end
24
+
25
+ def stop
26
+ @lock.synchronize {
27
+ unless @thread.nil?
28
+ @thread.raise LoopAbortedException
29
+ @thread.join
30
+ @thread = nil
31
+ end
32
+ }
33
+ end
34
+
35
+ def restart
36
+ stop
37
+ start
19
38
  end
20
39
 
21
40
  def change_state(_name, _params={}, _wait=nil)
@@ -43,17 +62,6 @@ module Crabfarm
43
62
  }
44
63
  end
45
64
 
46
- def cancel
47
- @lock.synchronize {
48
- if @working
49
- @thread.terminate
50
- @thread.join
51
- @thread = Thread.new { crawl_loop }
52
- @working = false
53
- end
54
- }
55
- end
56
-
57
65
  private
58
66
 
59
67
  def matches_current_state?(_name, _params)
@@ -95,7 +103,7 @@ module Crabfarm
95
103
  context = Crabfarm::Context.new
96
104
 
97
105
  begin
98
- while @running
106
+ loop do
99
107
  if @working
100
108
  @elapsed = Benchmark.measure do
101
109
  begin
@@ -119,12 +127,14 @@ module Crabfarm
119
127
  }
120
128
  else sleep 0.2 end
121
129
  end
130
+ rescue LoopAbortedException
131
+ logger.info "StateLoop: stopping"
132
+
122
133
  rescue Exception => e
123
134
  logger.fatal "StateLoop: unhandled exception!"
124
135
  logger.fatal e
125
136
 
126
137
  @lock.synchronize {
127
- @working = false
128
138
  @fatal = e
129
139
  }
130
140
  ensure
@@ -2,7 +2,7 @@ module Crabfarm
2
2
  class ForkedState
3
3
  extend Forwardable
4
4
 
5
- def_delegators :@state, :params, :get, :fetch
5
+ def_delegators :@state, :params, :get, :fetch, :event, :alert, :info
6
6
 
7
7
  def initialize(_state, _name, _mutex)
8
8
  @state = _state
@@ -64,12 +64,13 @@ module Crabfarm
64
64
 
65
65
  def self.start(_options)
66
66
  @@evaluator = Engines::SafeStateLoop.new
67
+ @@evaluator.start
67
68
  begin
68
69
  Support::CustomPuma.run API, _options
69
70
  rescue SystemExit, Interrupt
70
71
  # just finish
71
72
  ensure
72
- @@evaluator.release
73
+ @@evaluator.stop
73
74
  end
74
75
  end
75
76
 
@@ -1,3 +1,3 @@
1
1
  module Crabfarm
2
- VERSION = "0.0.14"
2
+ VERSION = "0.0.15"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crabfarm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.14
4
+ version: 0.0.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ignacio Baixas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-04 00:00:00.000000000 Z
11
+ date: 2015-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jbuilder