disbatch 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,446 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html>
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+
7
+ <link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" charset="utf-8" />
8
+
9
+ <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
10
+
11
+
12
+
13
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
14
+
15
+ <script type="text/javascript" charset="utf-8" src="js/full_list.js"></script>
16
+
17
+
18
+ <base id="base_target" target="_parent" />
19
+ </head>
20
+ <body>
21
+ <script type="text/javascript" charset="utf-8">
22
+ if (window.top.frames.main) {
23
+ document.getElementById('base_target').target = 'main';
24
+ document.body.className = 'frames';
25
+ }
26
+ </script>
27
+ <div id="content">
28
+ <h1 id="full_list_header">Method List</h1>
29
+ <div id="nav">
30
+
31
+ <a target="_self" href="class_list.html">Classes</a>
32
+
33
+ <a target="_self" href="method_list.html">Methods</a>
34
+
35
+ <a target="_self" href="file_list.html">Files</a>
36
+
37
+ </div>
38
+ <div id="search">Search: <input type="text" /></div>
39
+
40
+ <ul id="full_list" class="methods">
41
+
42
+
43
+ <li class="r1 ">
44
+ <span class='object_link'><a href="Disbatch/Node.html#%3D%3D-instance_method" title="Disbatch::Node#== (method)">#==</a></span>
45
+
46
+ <small>Disbatch::Node</small>
47
+
48
+ </li>
49
+
50
+
51
+ <li class="r2 ">
52
+ <span class='object_link'><a href="Disbatch/Queue.html#%3D%3D-instance_method" title="Disbatch::Queue#== (method)">#==</a></span>
53
+
54
+ <small>Disbatch::Queue</small>
55
+
56
+ </li>
57
+
58
+
59
+ <li class="r1 ">
60
+ <span class='object_link'><a href="Disbatch/Plugin.html#%5B%5D-instance_method" title="Disbatch::Plugin#[] (method)">#[]</a></span>
61
+
62
+ <small>Disbatch::Plugin</small>
63
+
64
+ </li>
65
+
66
+
67
+ <li class="r2 ">
68
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#conclude-instance_method" title="Disbatch::Queue::Task#conclude (method)">#conclude</a></span>
69
+
70
+ <small>Disbatch::Queue::Task</small>
71
+
72
+ </li>
73
+
74
+
75
+ <li class="r1 ">
76
+ <span class='object_link'><a href="Disbatch/Node.html#create-class_method" title="Disbatch::Node.create (method)">create</a></span>
77
+
78
+ <small>Disbatch::Node</small>
79
+
80
+ </li>
81
+
82
+
83
+ <li class="r2 ">
84
+ <span class='object_link'><a href="Disbatch/Queue.html#create-class_method" title="Disbatch::Queue.create (method)">create</a></span>
85
+
86
+ <small>Disbatch::Queue</small>
87
+
88
+ </li>
89
+
90
+
91
+ <li class="r1 ">
92
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#create-class_method" title="Disbatch::Queue::Task.create (method)">create</a></span>
93
+
94
+ <small>Disbatch::Queue::Task</small>
95
+
96
+ </li>
97
+
98
+
99
+ <li class="r2 ">
100
+ <span class='object_link'><a href="Disbatch.html#db-instance_method" title="Disbatch#db (method)">#db</a></span>
101
+
102
+ <small>Disbatch</small>
103
+
104
+ </li>
105
+
106
+
107
+ <li class="r1 ">
108
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#execute%21-instance_method" title="Disbatch::Queue::Task#execute! (method)">#execute!</a></span>
109
+
110
+ <small>Disbatch::Queue::Task</small>
111
+
112
+ </li>
113
+
114
+
115
+ <li class="r2 ">
116
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#fail-instance_method" title="Disbatch::Queue::Task#fail (method)">#fail</a></span>
117
+
118
+ <small>Disbatch::Queue::Task</small>
119
+
120
+ </li>
121
+
122
+
123
+ <li class="r1 ">
124
+ <span class='object_link'><a href="Disbatch/Node.html#get-class_method" title="Disbatch::Node.get (method)">get</a></span>
125
+
126
+ <small>Disbatch::Node</small>
127
+
128
+ </li>
129
+
130
+
131
+ <li class="r2 ">
132
+ <span class='object_link'><a href="Disbatch/Queue.html#get-class_method" title="Disbatch::Queue.get (method)">get</a></span>
133
+
134
+ <small>Disbatch::Queue</small>
135
+
136
+ </li>
137
+
138
+
139
+ <li class="r1 ">
140
+ <span class='object_link'><a href="Disbatch/Node.html#get_all-class_method" title="Disbatch::Node.get_all (method)">get_all</a></span>
141
+
142
+ <small>Disbatch::Node</small>
143
+
144
+ </li>
145
+
146
+
147
+ <li class="r2 ">
148
+ <span class='object_link'><a href="Disbatch/Queue.html#get_all-class_method" title="Disbatch::Queue.get_all (method)">get_all</a></span>
149
+
150
+ <small>Disbatch::Queue</small>
151
+
152
+ </li>
153
+
154
+
155
+ <li class="r1 ">
156
+ <span class='object_link'><a href="Disbatch/Node.html#id-instance_method" title="Disbatch::Node#id (method)">#id</a></span>
157
+
158
+ <small>Disbatch::Node</small>
159
+
160
+ </li>
161
+
162
+
163
+ <li class="r2 ">
164
+ <span class='object_link'><a href="Disbatch/Queue.html#id-instance_method" title="Disbatch::Queue#id (method)">#id</a></span>
165
+
166
+ <small>Disbatch::Queue</small>
167
+
168
+ </li>
169
+
170
+
171
+ <li class="r1 ">
172
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#id-instance_method" title="Disbatch::Queue::Task#id (method)">#id</a></span>
173
+
174
+ <small>Disbatch::Queue::Task</small>
175
+
176
+ </li>
177
+
178
+
179
+ <li class="r2 ">
180
+ <span class='object_link'><a href="Disbatch/Plugin.html#init-instance_method" title="Disbatch::Plugin#init (method)">#init</a></span>
181
+
182
+ <small>Disbatch::Plugin</small>
183
+
184
+ </li>
185
+
186
+
187
+ <li class="r1 ">
188
+ <span class='object_link'><a href="Disbatch/Plugin.html#init_all-instance_method" title="Disbatch::Plugin#init_all (method)">#init_all</a></span>
189
+
190
+ <small>Disbatch::Plugin</small>
191
+
192
+ </li>
193
+
194
+
195
+ <li class="r2 ">
196
+ <span class='object_link'><a href="Disbatch/Node.html#initialize-instance_method" title="Disbatch::Node#initialize (method)">#initialize</a></span>
197
+
198
+ <small>Disbatch::Node</small>
199
+
200
+ </li>
201
+
202
+
203
+ <li class="r1 ">
204
+ <span class='object_link'><a href="Disbatch/Queue.html#initialize-instance_method" title="Disbatch::Queue#initialize (method)">#initialize</a></span>
205
+
206
+ <small>Disbatch::Queue</small>
207
+
208
+ </li>
209
+
210
+
211
+ <li class="r2 ">
212
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#initialize-instance_method" title="Disbatch::Queue::Task#initialize (method)">#initialize</a></span>
213
+
214
+ <small>Disbatch::Queue::Task</small>
215
+
216
+ </li>
217
+
218
+
219
+ <li class="r1 ">
220
+ <span class='object_link'><a href="Disbatch/Queue.html#length-instance_method" title="Disbatch::Queue#length (method)">#length</a></span>
221
+
222
+ <small>Disbatch::Queue</small>
223
+
224
+ </li>
225
+
226
+
227
+ <li class="r2 ">
228
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#log-instance_method" title="Disbatch::Queue::Task#log (method)">#log</a></span>
229
+
230
+ <small>Disbatch::Queue::Task</small>
231
+
232
+ </li>
233
+
234
+
235
+ <li class="r1 ">
236
+ <span class='object_link'><a href="Disbatch.html#mongo_db-instance_method" title="Disbatch#mongo_db (method)">#mongo_db</a></span>
237
+
238
+ <small>Disbatch</small>
239
+
240
+ </li>
241
+
242
+
243
+ <li class="r2 ">
244
+ <span class='object_link'><a href="Disbatch.html#mongo_hosts-instance_method" title="Disbatch#mongo_hosts (method)">#mongo_hosts</a></span>
245
+
246
+ <small>Disbatch</small>
247
+
248
+ </li>
249
+
250
+
251
+ <li class="r1 ">
252
+ <span class='object_link'><a href="Disbatch.html#mongo_opts-instance_method" title="Disbatch#mongo_opts (method)">#mongo_opts</a></span>
253
+
254
+ <small>Disbatch</small>
255
+
256
+ </li>
257
+
258
+
259
+ <li class="r2 ">
260
+ <span class='object_link'><a href="Disbatch.html#node-instance_method" title="Disbatch#node (method)">#node</a></span>
261
+
262
+ <small>Disbatch</small>
263
+
264
+ </li>
265
+
266
+
267
+ <li class="r1 ">
268
+ <span class='object_link'><a href="Disbatch.html#node_id-instance_method" title="Disbatch#node_id (method)">#node_id</a></span>
269
+
270
+ <small>Disbatch</small>
271
+
272
+ </li>
273
+
274
+
275
+ <li class="r2 ">
276
+ <span class='object_link'><a href="Disbatch/Node.html#open%3F-instance_method" title="Disbatch::Node#open? (method)">#open?</a></span>
277
+
278
+ <small>Disbatch::Node</small>
279
+
280
+ </li>
281
+
282
+
283
+ <li class="r1 ">
284
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#parameters-instance_method" title="Disbatch::Queue::Task#parameters (method)">#parameters</a></span>
285
+
286
+ <small>Disbatch::Queue::Task</small>
287
+
288
+ </li>
289
+
290
+
291
+ <li class="r2 ">
292
+ <span class='object_link'><a href="Disbatch/Queue.html#plugin-instance_method" title="Disbatch::Queue#plugin (method)">#plugin</a></span>
293
+
294
+ <small>Disbatch::Queue</small>
295
+
296
+ </li>
297
+
298
+
299
+ <li class="r1 ">
300
+ <span class='object_link'><a href="Disbatch/Plugin.html#plugins-instance_method" title="Disbatch::Plugin#plugins (method)">#plugins</a></span>
301
+
302
+ <small>Disbatch::Plugin</small>
303
+
304
+ </li>
305
+
306
+
307
+ <li class="r2 ">
308
+ <span class='object_link'><a href="Disbatch/Queue.html#pop-instance_method" title="Disbatch::Queue#pop (method)">#pop</a></span>
309
+
310
+ <small>Disbatch::Queue</small>
311
+
312
+ </li>
313
+
314
+
315
+ <li class="r1 ">
316
+ <span class='object_link'><a href="Disbatch/Queue.html#push-instance_method" title="Disbatch::Queue#push (method)">#push</a></span>
317
+
318
+ <small>Disbatch::Queue</small>
319
+
320
+ </li>
321
+
322
+
323
+ <li class="r2 ">
324
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#query-instance_method" title="Disbatch::Queue::Task#query (method)">#query</a></span>
325
+
326
+ <small>Disbatch::Queue::Task</small>
327
+
328
+ </li>
329
+
330
+
331
+ <li class="r1 ">
332
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#queue-instance_method" title="Disbatch::Queue::Task#queue (method)">#queue</a></span>
333
+
334
+ <small>Disbatch::Queue::Task</small>
335
+
336
+ </li>
337
+
338
+
339
+ <li class="r2 ">
340
+ <span class='object_link'><a href="Disbatch/Node.html#register-instance_method" title="Disbatch::Node#register (method)">#register</a></span>
341
+
342
+ <small>Disbatch::Node</small>
343
+
344
+ </li>
345
+
346
+
347
+ <li class="r1 ">
348
+ <span class='object_link'><a href="Disbatch/Plugin.html#register-instance_method" title="Disbatch::Plugin#register (method)">#register</a></span>
349
+
350
+ <small>Disbatch::Plugin</small>
351
+
352
+ </li>
353
+
354
+
355
+ <li class="r2 ">
356
+ <span class='object_link'><a href="Disbatch/Node.html#release-instance_method" title="Disbatch::Node#release (method)">#release</a></span>
357
+
358
+ <small>Disbatch::Node</small>
359
+
360
+ </li>
361
+
362
+
363
+ <li class="r1 ">
364
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#release-instance_method" title="Disbatch::Queue::Task#release (method)">#release</a></span>
365
+
366
+ <small>Disbatch::Queue::Task</small>
367
+
368
+ </li>
369
+
370
+
371
+ <li class="r2 ">
372
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#status-instance_method" title="Disbatch::Queue::Task#status (method)">#status</a></span>
373
+
374
+ <small>Disbatch::Queue::Task</small>
375
+
376
+ </li>
377
+
378
+
379
+ <li class="r1 ">
380
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#status%3D-instance_method" title="Disbatch::Queue::Task#status= (method)">#status=</a></span>
381
+
382
+ <small>Disbatch::Queue::Task</small>
383
+
384
+ </li>
385
+
386
+
387
+ <li class="r2 ">
388
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#stderr-instance_method" title="Disbatch::Queue::Task#stderr (method)">#stderr</a></span>
389
+
390
+ <small>Disbatch::Queue::Task</small>
391
+
392
+ </li>
393
+
394
+
395
+ <li class="r1 ">
396
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#stderr%3D-instance_method" title="Disbatch::Queue::Task#stderr= (method)">#stderr=</a></span>
397
+
398
+ <small>Disbatch::Queue::Task</small>
399
+
400
+ </li>
401
+
402
+
403
+ <li class="r2 ">
404
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#stdout-instance_method" title="Disbatch::Queue::Task#stdout (method)">#stdout</a></span>
405
+
406
+ <small>Disbatch::Queue::Task</small>
407
+
408
+ </li>
409
+
410
+
411
+ <li class="r1 ">
412
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#stdout%3D-instance_method" title="Disbatch::Queue::Task#stdout= (method)">#stdout=</a></span>
413
+
414
+ <small>Disbatch::Queue::Task</small>
415
+
416
+ </li>
417
+
418
+
419
+ <li class="r2 ">
420
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#take-class_method" title="Disbatch::Queue::Task.take (method)">take</a></span>
421
+
422
+ <small>Disbatch::Queue::Task</small>
423
+
424
+ </li>
425
+
426
+
427
+ <li class="r1 ">
428
+ <span class='object_link'><a href="Mongo.html#try-class_method" title="Mongo.try (method)">try</a></span>
429
+
430
+ <small>Mongo</small>
431
+
432
+ </li>
433
+
434
+
435
+ <li class="r2 ">
436
+ <span class='object_link'><a href="Disbatch/Queue/Task.html#update-instance_method" title="Disbatch::Queue::Task#update (method)">#update</a></span>
437
+
438
+ <small>Disbatch::Queue::Task</small>
439
+
440
+ </li>
441
+
442
+
443
+ </ul>
444
+ </div>
445
+ </body>
446
+ </html>
@@ -0,0 +1,103 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>
7
+ Top Level Namespace
8
+
9
+ &mdash; Documentation by YARD 0.7.3
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ relpath = '';
19
+ if (relpath != '') relpath += '/';
20
+ </script>
21
+
22
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
23
+
24
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
25
+
26
+
27
+ </head>
28
+ <body>
29
+ <script type="text/javascript" charset="utf-8">
30
+ if (window.top.frames.main) document.body.className = 'frames';
31
+ </script>
32
+
33
+ <div id="header">
34
+ <div id="menu">
35
+
36
+ <a href="_index.html">Index</a> &raquo;
37
+
38
+
39
+ <span class="title">Top Level Namespace</span>
40
+
41
+
42
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
43
+ </div>
44
+
45
+ <div id="search">
46
+
47
+ <a id="class_list_link" href="#">Class List</a>
48
+
49
+ <a id="method_list_link" href="#">Method List</a>
50
+
51
+ <a id="file_list_link" href="#">File List</a>
52
+
53
+ </div>
54
+ <div class="clear"></div>
55
+ </div>
56
+
57
+ <iframe id="search_frame"></iframe>
58
+
59
+ <div id="content"><h1>Top Level Namespace
60
+
61
+
62
+
63
+ </h1>
64
+
65
+ <dl class="box">
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+ </dl>
75
+ <div class="clear"></div>
76
+
77
+ <h2>Defined Under Namespace</h2>
78
+ <p class="children">
79
+
80
+
81
+ <strong class="modules">Modules:</strong> <span class='object_link'><a href="Disbatch.html" title="Disbatch (module)">Disbatch</a></span>, <span class='object_link'><a href="Mongo.html" title="Mongo (module)">Mongo</a></span>
82
+
83
+
84
+
85
+
86
+ </p>
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+ </div>
95
+
96
+ <div id="footer">
97
+ Generated on Mon Oct 24 16:54:01 2011 by
98
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
99
+ 0.7.3 (ruby-1.8.7).
100
+ </div>
101
+
102
+ </body>
103
+ </html>
@@ -0,0 +1,6 @@
1
+ module Disbatch
2
+
3
+ # Raised when attempting to open an invalid node
4
+ class NoNodeError < RuntimeError; end
5
+
6
+ end
@@ -0,0 +1,105 @@
1
+ # Represesents a Disbatch node
2
+ class Disbatch::Node
3
+
4
+ attr_accessor :id
5
+
6
+ private_class_method :new
7
+
8
+ # Create a node object
9
+ #
10
+ # @param [String] id
11
+ def initialize(id)
12
+ @open = false
13
+ @id = id
14
+ end
15
+
16
+ # Get an existing node
17
+ #
18
+ # @param [String] id
19
+ def self.get(id = Disbatch.node_id)
20
+ Mongo.try do
21
+ Disbatch.db[:nodes].find_one({:_id => id}) ? new(id) : nil
22
+ end
23
+ end
24
+
25
+ # Get all existing nodes
26
+ def self.get_all
27
+ Mongo.try do
28
+ Disbatch.db[:nodes].find.map { |doc| new(doc['_id']) }
29
+ end
30
+ end
31
+
32
+ # Create a new node
33
+ #
34
+ # @param [String] id
35
+ def self.create(id = Disbatch.node_id)
36
+ Mongo.try do
37
+ Disbatch.db[:nodes].insert({
38
+ :_id => id,
39
+ :ctime => Time.now
40
+ })
41
+ end
42
+
43
+ new(id)
44
+ end
45
+
46
+ # Register node
47
+ def register(force = false)
48
+ return true if @open
49
+
50
+ # FIXME - check for existing registration seperately, throw exception
51
+
52
+ doc = Mongo.try do
53
+ Disbatch.db[:nodes].find_and_modify({
54
+ :query => force ? { :_id => @id } : { :_id => @id, :pid => nil },
55
+ :update => { :$set => {
56
+ :pid => Process.pid,
57
+ :version => Disbatch::VERSION,
58
+ :spec_version => Disbatch::SPEC_VERSION
59
+ } }
60
+ })
61
+ end
62
+
63
+ if doc.nil?
64
+ false
65
+ else
66
+ @open = true
67
+ self
68
+ end
69
+ end
70
+
71
+ # Release ownership of node
72
+ def release
73
+ return false unless @open
74
+
75
+ doc = Mongo.try do
76
+ Disbatch.db[:nodes].find_and_modify({
77
+ :query => { :_id => @id, :pid => Process.pid },
78
+ :update => { :$set => {
79
+ :pid => nil,
80
+ :mtime => Time.now,
81
+ :atime => Time.now
82
+ } }
83
+ })
84
+ end
85
+
86
+ if doc.nil?
87
+ false
88
+ else
89
+ @open = false
90
+ true
91
+ end
92
+ end
93
+
94
+ def open?
95
+ @open
96
+ end
97
+
98
+ # Check equality with another node object
99
+ #
100
+ # @param [Disbatch::Node] node another node to compare against
101
+ def ==(node)
102
+ @id == node.id
103
+ end
104
+
105
+ end
@@ -0,0 +1,33 @@
1
+ module Disbatch::Plugin::Hello
2
+
3
+ def execute(task)
4
+ return nil unless defined?(task) && task.respond_to?(:params)
5
+
6
+ name = task.params['name']
7
+ len = rand(5)
8
+
9
+ task.log("Hello, #{name}!")
10
+ sleep(len)
11
+ task.log("Goodbye, #{name}. It was a pleasure spending #{len} seconds with you.")
12
+
13
+ puts("Executed task with params: #{task.params.inspect}")
14
+
15
+ task.conclude
16
+ end
17
+
18
+ def params
19
+ return [
20
+ {
21
+ 'name' => 'name',
22
+ 'type' => 'string',
23
+ 'default' => 'world',
24
+ 'description' => 'some person or thing to greet'
25
+ }
26
+ ]
27
+ end
28
+
29
+ extend self
30
+
31
+ Disbatch::Plugin.register(self)
32
+
33
+ end