pigeon 0.5.0 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/pigeon/engine.rb +7 -1
- data/lib/pigeon/processor.rb +14 -0
- data/lib/pigeon/task.rb +3 -3
- data/pigeon.gemspec +1 -1
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.1
|
data/lib/pigeon/engine.rb
CHANGED
@@ -224,6 +224,12 @@ class Pigeon::Engine
|
|
224
224
|
def self.unregister_engine(engine)
|
225
225
|
@engines.delete(engine)
|
226
226
|
end
|
227
|
+
|
228
|
+
# Schedules a block for execution on the main EventMachine thread. This is
|
229
|
+
# a wrapper around the EventMachine.schedule method.
|
230
|
+
def self.execute_in_main_thread(&block)
|
231
|
+
EventMachine.schedule(&block)
|
232
|
+
end
|
227
233
|
|
228
234
|
# == Instance Methods =====================================================
|
229
235
|
|
@@ -319,7 +325,7 @@ class Pigeon::Engine
|
|
319
325
|
|
320
326
|
# Schedules a block for execution on the main EventMachine thread. This is
|
321
327
|
# a wrapper around the EventMachine.schedule method.
|
322
|
-
def
|
328
|
+
def execute_in_main_thread(&block)
|
323
329
|
EventMachine.schedule(&block)
|
324
330
|
end
|
325
331
|
|
data/lib/pigeon/processor.rb
CHANGED
@@ -70,9 +70,22 @@ class Pigeon::Processor
|
|
70
70
|
end
|
71
71
|
|
72
72
|
protected
|
73
|
+
# This method is called before a task is started. The default handler does
|
74
|
+
# nothing but this can be customized in a subclass.
|
75
|
+
def before_task(task)
|
76
|
+
end
|
77
|
+
|
78
|
+
# This method is called each time a task is completed or fails. The default
|
79
|
+
# handler does nothing but this can be customized in a subclass.
|
80
|
+
def after_task(task)
|
81
|
+
end
|
82
|
+
|
83
|
+
# Used to reliably switch to the next task and coordinates the required
|
84
|
+
# hand-off from one to the next.
|
73
85
|
def switch_to_next_task!
|
74
86
|
@lock.synchronize do
|
75
87
|
if (@task)
|
88
|
+
after_task(@task)
|
76
89
|
@task.processor = nil
|
77
90
|
end
|
78
91
|
|
@@ -80,6 +93,7 @@ protected
|
|
80
93
|
|
81
94
|
if (@queue)
|
82
95
|
if (@task = @queue.pop(&@filter))
|
96
|
+
before_task(@task)
|
83
97
|
@task.run!(self) do
|
84
98
|
switch_to_next_task!
|
85
99
|
end
|
data/lib/pigeon/task.rb
CHANGED
@@ -113,7 +113,7 @@ protected
|
|
113
113
|
end
|
114
114
|
|
115
115
|
rescue Object => e
|
116
|
-
|
116
|
+
exception_received(e)
|
117
117
|
ensure
|
118
118
|
after_state(state)
|
119
119
|
|
@@ -155,11 +155,11 @@ protected
|
|
155
155
|
# strictly required. Any exceptions generated by the block will be captured
|
156
156
|
# and will cause the task to transition to the failed state.
|
157
157
|
def execute_in_main_thread
|
158
|
-
@engine.
|
158
|
+
@engine.execute_in_main_thread do
|
159
159
|
begin
|
160
160
|
yield
|
161
161
|
rescue Object => e
|
162
|
-
|
162
|
+
exception_received(e)
|
163
163
|
end
|
164
164
|
end
|
165
165
|
end
|
data/pigeon.gemspec
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: pigeon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.5.
|
5
|
+
version: 0.5.1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- tadman
|
@@ -90,7 +90,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
90
90
|
requirements: []
|
91
91
|
|
92
92
|
rubyforge_project:
|
93
|
-
rubygems_version: 1.5.
|
93
|
+
rubygems_version: 1.5.3
|
94
94
|
signing_key:
|
95
95
|
specification_version: 3
|
96
96
|
summary: Simple daemonized EventMachine engine framework with plug-in support
|