crabfarm 0.0.14 → 0.0.15

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
  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