ezmq 0.2.0 → 0.3.0
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 +4 -4
- data/README.md +59 -0
- data/doc/EZMQ.html +2 -2
- data/doc/EZMQ/Client.html +15 -15
- data/doc/EZMQ/Publisher.html +10 -10
- data/doc/EZMQ/Puller.html +276 -0
- data/doc/EZMQ/Pusher.html +276 -0
- data/doc/EZMQ/Server.html +15 -15
- data/doc/EZMQ/Socket.html +172 -56
- data/doc/EZMQ/Subscriber.html +20 -135
- data/doc/_index.html +15 -1
- data/doc/class_list.html +1 -1
- data/doc/file.README.html +70 -16
- data/doc/index.html +70 -16
- data/doc/method_list.html +24 -12
- data/doc/top-level-namespace.html +1 -1
- data/ezmq.gemspec +1 -1
- data/lib/ezmq.rb +59 -32
- metadata +4 -2
data/doc/EZMQ/Subscriber.html
CHANGED
@@ -187,30 +187,6 @@
|
|
187
187
|
<p>Creates a new Subscriber socket.</p>
|
188
188
|
</div></span>
|
189
189
|
|
190
|
-
</li>
|
191
|
-
|
192
|
-
|
193
|
-
<li class="public ">
|
194
|
-
<span class="summary_signature">
|
195
|
-
|
196
|
-
<a href="#listen-instance_method" title="#listen (instance method)">- (void) <strong>listen</strong> {|message| ... }</a>
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
</span>
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
<span class="summary_desc"><div class='inline'>
|
211
|
-
<p>By default, waits for a message and prints it to STDOUT.</p>
|
212
|
-
</div></span>
|
213
|
-
|
214
190
|
</li>
|
215
191
|
|
216
192
|
|
@@ -275,7 +251,7 @@
|
|
275
251
|
|
276
252
|
|
277
253
|
<h3 class="inherited">Methods inherited from <span class='object_link'><a href="Socket.html" title="EZMQ::Socket (class)">Socket</a></span></h3>
|
278
|
-
<p class="inherited"><span class='object_link'><a href="Socket.html#bind-instance_method" title="EZMQ::Socket#bind (method)">#bind</a></span>, <span class='object_link'><a href="Socket.html#connect-instance_method" title="EZMQ::Socket#connect (method)">#connect</a></span>, <span class='object_link'><a href="Socket.html#receive-instance_method" title="EZMQ::Socket#receive (method)">#receive</a></span>, <span class='object_link'><a href="Socket.html#send-instance_method" title="EZMQ::Socket#send (method)">#send</a></span></p>
|
254
|
+
<p class="inherited"><span class='object_link'><a href="Socket.html#bind-instance_method" title="EZMQ::Socket#bind (method)">#bind</a></span>, <span class='object_link'><a href="Socket.html#connect-instance_method" title="EZMQ::Socket#connect (method)">#connect</a></span>, <span class='object_link'><a href="Socket.html#listen-instance_method" title="EZMQ::Socket#listen (method)">#listen</a></span>, <span class='object_link'><a href="Socket.html#receive-instance_method" title="EZMQ::Socket#receive (method)">#receive</a></span>, <span class='object_link'><a href="Socket.html#send-instance_method" title="EZMQ::Socket#send (method)">#send</a></span></p>
|
279
255
|
<div id="constructor_details" class="method_details_list">
|
280
256
|
<h2>Constructor Details</h2>
|
281
257
|
|
@@ -362,13 +338,13 @@
|
|
362
338
|
<pre class="lines">
|
363
339
|
|
364
340
|
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
341
|
+
232
|
342
|
+
233
|
343
|
+
234
|
344
|
+
235</pre>
|
369
345
|
</td>
|
370
346
|
<td>
|
371
|
-
<pre class="code"><span class="info file"># File 'lib/ezmq.rb', line
|
347
|
+
<pre class="code"><span class="info file"># File 'lib/ezmq.rb', line 232</span>
|
372
348
|
|
373
349
|
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='op'>**</span><span class='id identifier rubyid_options'>options</span><span class='rparen'>)</span>
|
374
350
|
<span class='kw'>super</span> <span class='symbol'>:connect</span><span class='comma'>,</span> <span class='const'>ZMQ</span><span class='op'>::</span><span class='const'>SUB</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span>
|
@@ -412,12 +388,12 @@
|
|
412
388
|
<pre class="lines">
|
413
389
|
|
414
390
|
|
415
|
-
|
416
|
-
|
417
|
-
|
391
|
+
220
|
392
|
+
221
|
393
|
+
222</pre>
|
418
394
|
</td>
|
419
395
|
<td>
|
420
|
-
<pre class="code"><span class="info file"># File 'lib/ezmq.rb', line
|
396
|
+
<pre class="code"><span class="info file"># File 'lib/ezmq.rb', line 220</span>
|
421
397
|
|
422
398
|
<span class='kw'>def</span> <span class='id identifier rubyid_action'>action</span>
|
423
399
|
<span class='ivar'>@action</span>
|
@@ -435,98 +411,7 @@
|
|
435
411
|
|
436
412
|
|
437
413
|
<div class="method_details first">
|
438
|
-
<h3 class="signature first" id="
|
439
|
-
|
440
|
-
- (<tt>void</tt>) <strong>listen</strong> {|message| ... }
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
</h3><div class="docstring">
|
447
|
-
<div class="discussion">
|
448
|
-
<p class="note returns_void">This method returns an undefined value.</p>
|
449
|
-
<p>By default, waits for a message and prints it to STDOUT.</p>
|
450
|
-
|
451
|
-
|
452
|
-
</div>
|
453
|
-
</div>
|
454
|
-
<div class="tags">
|
455
|
-
|
456
|
-
<p class="tag_title">Yields:</p>
|
457
|
-
<ul class="yield">
|
458
|
-
|
459
|
-
<li>
|
460
|
-
|
461
|
-
|
462
|
-
<span class='type'></span>
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
<div class='inline'>
|
468
|
-
<p>message passes the message received to the block.</p>
|
469
|
-
</div>
|
470
|
-
|
471
|
-
</li>
|
472
|
-
|
473
|
-
</ul>
|
474
|
-
<p class="tag_title">Yield Parameters:</p>
|
475
|
-
<ul class="yieldparam">
|
476
|
-
|
477
|
-
<li>
|
478
|
-
|
479
|
-
<span class='name'>message</span>
|
480
|
-
|
481
|
-
|
482
|
-
<span class='type'>(<tt>String</tt>)</span>
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
—
|
487
|
-
<div class='inline'>
|
488
|
-
<p>the message received.</p>
|
489
|
-
</div>
|
490
|
-
|
491
|
-
</li>
|
492
|
-
|
493
|
-
</ul>
|
494
|
-
|
495
|
-
</div><table class="source_code">
|
496
|
-
<tr>
|
497
|
-
<td>
|
498
|
-
<pre class="lines">
|
499
|
-
|
500
|
-
|
501
|
-
256
|
502
|
-
257
|
503
|
-
258
|
504
|
-
259
|
505
|
-
260
|
506
|
-
261
|
507
|
-
262
|
508
|
-
263
|
509
|
-
264</pre>
|
510
|
-
</td>
|
511
|
-
<td>
|
512
|
-
<pre class="code"><span class="info file"># File 'lib/ezmq.rb', line 256</span>
|
513
|
-
|
514
|
-
<span class='kw'>def</span> <span class='id identifier rubyid_listen'>listen</span>
|
515
|
-
<span class='id identifier rubyid_loop'>loop</span> <span class='kw'>do</span>
|
516
|
-
<span class='kw'>if</span> <span class='id identifier rubyid_block_given?'>block_given?</span>
|
517
|
-
<span class='kw'>yield</span> <span class='id identifier rubyid_receive'>receive</span>
|
518
|
-
<span class='kw'>else</span>
|
519
|
-
<span class='id identifier rubyid_puts'>puts</span> <span class='id identifier rubyid_receive'>receive</span>
|
520
|
-
<span class='kw'>end</span>
|
521
|
-
<span class='kw'>end</span>
|
522
|
-
<span class='kw'>end</span></pre>
|
523
|
-
</td>
|
524
|
-
</tr>
|
525
|
-
</table>
|
526
|
-
</div>
|
527
|
-
|
528
|
-
<div class="method_details ">
|
529
|
-
<h3 class="signature " id="subscribe-instance_method">
|
414
|
+
<h3 class="signature first" id="subscribe-instance_method">
|
530
415
|
|
531
416
|
- (<tt>Boolean</tt>) <strong>subscribe</strong>(topic)
|
532
417
|
|
@@ -602,12 +487,12 @@ provided, #initialize calls #subscribe automatically.</p>
|
|
602
487
|
<pre class="lines">
|
603
488
|
|
604
489
|
|
605
|
-
|
606
|
-
|
607
|
-
|
490
|
+
248
|
491
|
+
249
|
492
|
+
250</pre>
|
608
493
|
</td>
|
609
494
|
<td>
|
610
|
-
<pre class="code"><span class="info file"># File 'lib/ezmq.rb', line
|
495
|
+
<pre class="code"><span class="info file"># File 'lib/ezmq.rb', line 248</span>
|
611
496
|
|
612
497
|
<span class='kw'>def</span> <span class='id identifier rubyid_subscribe'>subscribe</span><span class='lparen'>(</span><span class='id identifier rubyid_topic'>topic</span><span class='rparen'>)</span>
|
613
498
|
<span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_setsockopt'>setsockopt</span><span class='lparen'>(</span><span class='const'>ZMQ</span><span class='op'>::</span><span class='const'>SUBSCRIBE</span><span class='comma'>,</span> <span class='id identifier rubyid_topic'>topic</span><span class='rparen'>)</span> <span class='op'>==</span> <span class='int'>0</span>
|
@@ -682,12 +567,12 @@ set, this will only remove one.</p>
|
|
682
567
|
<pre class="lines">
|
683
568
|
|
684
569
|
|
685
|
-
|
686
|
-
|
687
|
-
|
570
|
+
259
|
571
|
+
260
|
572
|
+
261</pre>
|
688
573
|
</td>
|
689
574
|
<td>
|
690
|
-
<pre class="code"><span class="info file"># File 'lib/ezmq.rb', line
|
575
|
+
<pre class="code"><span class="info file"># File 'lib/ezmq.rb', line 259</span>
|
691
576
|
|
692
577
|
<span class='kw'>def</span> <span class='id identifier rubyid_unsubscribe'>unsubscribe</span><span class='lparen'>(</span><span class='id identifier rubyid_topic'>topic</span><span class='rparen'>)</span>
|
693
578
|
<span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_setsockopt'>setsockopt</span><span class='lparen'>(</span><span class='const'>ZMQ</span><span class='op'>::</span><span class='const'>UNSUBSCRIBE</span><span class='comma'>,</span> <span class='id identifier rubyid_topic'>topic</span><span class='rparen'>)</span> <span class='op'>==</span> <span class='int'>0</span>
|
@@ -702,7 +587,7 @@ set, this will only remove one.</p>
|
|
702
587
|
</div>
|
703
588
|
|
704
589
|
<div id="footer">
|
705
|
-
Generated on
|
590
|
+
Generated on Sun Jan 11 14:20:10 2015 by
|
706
591
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
707
592
|
0.8.7.6 (ruby-2.0.0).
|
708
593
|
</div>
|
data/doc/_index.html
CHANGED
@@ -119,6 +119,20 @@
|
|
119
119
|
|
120
120
|
</li>
|
121
121
|
|
122
|
+
<li>
|
123
|
+
<span class='object_link'><a href="EZMQ/Puller.html" title="EZMQ::Puller (class)">Puller</a></span>
|
124
|
+
|
125
|
+
<small>(EZMQ)</small>
|
126
|
+
|
127
|
+
</li>
|
128
|
+
|
129
|
+
<li>
|
130
|
+
<span class='object_link'><a href="EZMQ/Pusher.html" title="EZMQ::Pusher (class)">Pusher</a></span>
|
131
|
+
|
132
|
+
<small>(EZMQ)</small>
|
133
|
+
|
134
|
+
</li>
|
135
|
+
|
122
136
|
</ul>
|
123
137
|
</ul>
|
124
138
|
|
@@ -160,7 +174,7 @@
|
|
160
174
|
</div>
|
161
175
|
|
162
176
|
<div id="footer">
|
163
|
-
Generated on
|
177
|
+
Generated on Sun Jan 11 14:20:10 2015 by
|
164
178
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
165
179
|
0.8.7.6 (ruby-2.0.0).
|
166
180
|
</div>
|
data/doc/class_list.html
CHANGED
@@ -50,7 +50,7 @@
|
|
50
50
|
|
51
51
|
<ul id="full_list" class="class">
|
52
52
|
<li><span class='object_link'><a href="top-level-namespace.html" title="Top Level Namespace (root)">Top Level Namespace</a></span></li>
|
53
|
-
<li><a class='toggle'></a> <span class='object_link'><a href="EZMQ.html" title="EZMQ (module)">EZMQ</a></span><small class='search_info'>Top Level Namespace</small></li><ul><li><span class='object_link'><a href="EZMQ/Client.html" title="EZMQ::Client (class)">Client</a></span> < Socket<small class='search_info'>EZMQ</small></li><li><span class='object_link'><a href="EZMQ/Publisher.html" title="EZMQ::Publisher (class)">Publisher</a></span> < Socket<small class='search_info'>EZMQ</small></li><li><span class='object_link'><a href="EZMQ/Server.html" title="EZMQ::Server (class)">Server</a></span> < Socket<small class='search_info'>EZMQ</small></li><li><span class='object_link'><a href="EZMQ/Socket.html" title="EZMQ::Socket (class)">Socket</a></span> < Object<small class='search_info'>EZMQ</small></li><li><span class='object_link'><a href="EZMQ/Subscriber.html" title="EZMQ::Subscriber (class)">Subscriber</a></span> < Socket<small class='search_info'>EZMQ</small></li></ul>
|
53
|
+
<li><a class='toggle'></a> <span class='object_link'><a href="EZMQ.html" title="EZMQ (module)">EZMQ</a></span><small class='search_info'>Top Level Namespace</small></li><ul><li><span class='object_link'><a href="EZMQ/Client.html" title="EZMQ::Client (class)">Client</a></span> < Socket<small class='search_info'>EZMQ</small></li><li><span class='object_link'><a href="EZMQ/Publisher.html" title="EZMQ::Publisher (class)">Publisher</a></span> < Socket<small class='search_info'>EZMQ</small></li><li><span class='object_link'><a href="EZMQ/Puller.html" title="EZMQ::Puller (class)">Puller</a></span> < Socket<small class='search_info'>EZMQ</small></li><li><span class='object_link'><a href="EZMQ/Pusher.html" title="EZMQ::Pusher (class)">Pusher</a></span> < Socket<small class='search_info'>EZMQ</small></li><li><span class='object_link'><a href="EZMQ/Server.html" title="EZMQ::Server (class)">Server</a></span> < Socket<small class='search_info'>EZMQ</small></li><li><span class='object_link'><a href="EZMQ/Socket.html" title="EZMQ::Socket (class)">Socket</a></span> < Object<small class='search_info'>EZMQ</small></li><li><span class='object_link'><a href="EZMQ/Subscriber.html" title="EZMQ::Subscriber (class)">Subscriber</a></span> < Socket<small class='search_info'>EZMQ</small></li></ul>
|
54
54
|
|
55
55
|
</ul>
|
56
56
|
</div>
|
data/doc/file.README.html
CHANGED
@@ -97,25 +97,25 @@
|
|
97
97
|
|
98
98
|
<p>Waits for a request, prints it to STDOUT, and thanks the client for it.</p>
|
99
99
|
|
100
|
-
<pre class="code ruby"><code class="ruby">require
|
101
|
-
|
102
|
-
server = EZMQ::Server.new
|
103
|
-
server.listen do |message|
|
104
|
-
puts message
|
105
|
-
'Thanks for the message!' # The return of the block is sent to the client.
|
106
|
-
end
|
100
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ezmq</span><span class='tstring_end'>'</span></span>
|
107
101
|
|
108
|
-
|
109
|
-
|
110
|
-
|
102
|
+
<span class='id identifier rubyid_server'>server</span> <span class='op'>=</span> <span class='const'>EZMQ</span><span class='op'>::</span><span class='const'>Server</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
|
103
|
+
<span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_message'>message</span><span class='op'>|</span>
|
104
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='id identifier rubyid_message'>message</span>
|
105
|
+
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Thanks for the message!</span><span class='tstring_end'>'</span></span> <span class='comment'># The return of the block is sent to the client.
|
106
|
+
</span><span class='kw'>end</span>
|
111
107
|
</code></pre>
|
112
108
|
|
113
|
-
<
|
114
|
-
require 'json'</p>
|
109
|
+
<h2>JSON Echo Server</h2>
|
115
110
|
|
116
|
-
<p>
|
117
|
-
|
118
|
-
|
111
|
+
<p>Waits for JSON message, decodes it, re-encodes it, and sends it back.</p>
|
112
|
+
|
113
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ezmq</span><span class='tstring_end'>'</span></span>
|
114
|
+
<span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>json</span><span class='tstring_end'>'</span></span>
|
115
|
+
|
116
|
+
<span class='id identifier rubyid_server'>server</span> <span class='op'>=</span> <span class='const'>EZMQ</span><span class='op'>::</span><span class='const'>Server</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='label'>encode:</span> <span class='tlambda'>-></span> <span class='id identifier rubyid_m'>m</span> <span class='tlambeg'>{</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_dump'>dump</span> <span class='id identifier rubyid_m'>m</span> <span class='rbrace'>}</span><span class='comma'>,</span> <span class='label'>decode:</span> <span class='tlambda'>-></span> <span class='id identifier rubyid_m'>m</span> <span class='tlambeg'>{</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_load'>load</span> <span class='id identifier rubyid_m'>m</span> <span class='rbrace'>}</span>
|
117
|
+
<span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span>
|
118
|
+
</code></pre>
|
119
119
|
|
120
120
|
<h2>JSON Synchronous Client Request</h2>
|
121
121
|
|
@@ -153,6 +153,60 @@ server.listen
|
|
153
153
|
<span class='id identifier rubyid_subscriber'>subscriber</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span>
|
154
154
|
</code></pre>
|
155
155
|
|
156
|
+
<h2>Pipeline Work Generator</h2>
|
157
|
+
|
158
|
+
<p>Generates work, distributes it to workers via PUSH socket.</p>
|
159
|
+
|
160
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ezmq</span><span class='tstring_end'>'</span></span>
|
161
|
+
<span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>json</span><span class='tstring_end'>'</span></span>
|
162
|
+
|
163
|
+
<span class='id identifier rubyid_generator'>generator</span> <span class='op'>=</span> <span class='const'>EZMQ</span><span class='op'>::</span><span class='const'>Pusher</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='symbol'>:bind</span><span class='comma'>,</span> <span class='label'>encode:</span> <span class='tlambda'>-></span> <span class='id identifier rubyid_m'>m</span> <span class='tlambeg'>{</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_dump'>dump</span> <span class='id identifier rubyid_m'>m</span> <span class='rbrace'>}</span>
|
164
|
+
|
165
|
+
<span class='int'>15</span><span class='period'>.</span><span class='id identifier rubyid_times'>times</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_id'>id</span><span class='op'>|</span>
|
166
|
+
<span class='id identifier rubyid_work'>work</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>id</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>task_</span><span class='embexpr_beg'>#{</span> <span class='id identifier rubyid_id'>id</span> <span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>request</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>100</span><span class='tstring_end'>'</span></span> <span class='rbrace'>}</span>
|
167
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Generated work </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_work'>work</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
168
|
+
<span class='id identifier rubyid_generator'>generator</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span> <span class='id identifier rubyid_work'>work</span>
|
169
|
+
<span class='kw'>end</span>
|
170
|
+
</code></pre>
|
171
|
+
|
172
|
+
<h2>Pipeline Workers</h2>
|
173
|
+
|
174
|
+
<p>3 worker threads PULL work from the Generator and PUSH results to the Collector.</p>
|
175
|
+
|
176
|
+
<p>The 'work' here is generating a random number between 1 and a requested maximum.</p>
|
177
|
+
|
178
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ezmq</span><span class='tstring_end'>'</span></span>
|
179
|
+
<span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>json</span><span class='tstring_end'>'</span></span>
|
180
|
+
|
181
|
+
<span class='id identifier rubyid_workers'>workers</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
182
|
+
|
183
|
+
<span class='int'>3</span><span class='period'>.</span><span class='id identifier rubyid_times'>times</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_id'>id</span><span class='op'>|</span>
|
184
|
+
<span class='id identifier rubyid_workers'>workers</span> <span class='op'><<</span> <span class='const'>Thread</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='kw'>do</span>
|
185
|
+
<span class='id identifier rubyid_input'>input</span> <span class='op'>=</span> <span class='const'>EZMQ</span><span class='op'>::</span><span class='const'>Puller</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='symbol'>:connect</span><span class='comma'>,</span> <span class='label'>decode:</span> <span class='tlambda'>-></span> <span class='id identifier rubyid_m'>m</span> <span class='tlambeg'>{</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_load'>load</span> <span class='id identifier rubyid_m'>m</span> <span class='rbrace'>}</span>
|
186
|
+
<span class='id identifier rubyid_output'>output</span> <span class='op'>=</span> <span class='const'>EZMQ</span><span class='op'>::</span><span class='const'>Pusher</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='label'>port:</span> <span class='int'>5556</span><span class='comma'>,</span> <span class='label'>encode:</span> <span class='tlambda'>-></span> <span class='id identifier rubyid_m'>m</span> <span class='tlambeg'>{</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_dump'>dump</span> <span class='id identifier rubyid_m'>m</span> <span class='rbrace'>}</span>
|
187
|
+
<span class='id identifier rubyid_input'>input</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_work'>work</span><span class='op'>|</span>
|
188
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Worker </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_id'>id</span><span class='embexpr_end'>}</span><span class='tstring_content'> pulled </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_work'>work</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
189
|
+
<span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_rand'>rand</span><span class='lparen'>(</span><span class='int'>1</span><span class='op'>..</span><span class='id identifier rubyid_work'>work</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>request</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span><span class='rparen'>)</span>
|
190
|
+
<span class='id identifier rubyid_report'>report</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>id</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='id identifier rubyid_work'>work</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>id</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>result</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='id identifier rubyid_result'>result</span> <span class='rbrace'>}</span>
|
191
|
+
<span class='id identifier rubyid_output'>output</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span> <span class='id identifier rubyid_report'>report</span>
|
192
|
+
<span class='kw'>end</span>
|
193
|
+
<span class='kw'>end</span>
|
194
|
+
<span class='kw'>end</span>
|
195
|
+
|
196
|
+
<span class='id identifier rubyid_workers'>workers</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:join</span><span class='rparen'>)</span>
|
197
|
+
</code></pre>
|
198
|
+
|
199
|
+
<h2>Pipeline Results Collector</h2>
|
200
|
+
|
201
|
+
<p>PULLs results from workers and prints it to STDOUT.</p>
|
202
|
+
|
203
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ezmq</span><span class='tstring_end'>'</span></span>
|
204
|
+
<span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>json</span><span class='tstring_end'>'</span></span>
|
205
|
+
|
206
|
+
<span class='id identifier rubyid_collector'>collector</span> <span class='op'>=</span> <span class='const'>EZMQ</span><span class='op'>::</span><span class='const'>Puller</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='label'>port:</span> <span class='int'>5556</span>
|
207
|
+
<span class='id identifier rubyid_collector'>collector</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span>
|
208
|
+
</code></pre>
|
209
|
+
|
156
210
|
<h1>Operating System Notes</h1>
|
157
211
|
|
158
212
|
<p>As this relies on <a href="https://github.com/chuckremes/ffi-rzmq">ffi-rzmq</a>, you will need to have the zeromq libraries available.</p>
|
@@ -172,7 +226,7 @@ sudo aptitude install libzmq3-dev
|
|
172
226
|
</div></div>
|
173
227
|
|
174
228
|
<div id="footer">
|
175
|
-
Generated on
|
229
|
+
Generated on Sun Jan 11 14:20:10 2015 by
|
176
230
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
177
231
|
0.8.7.6 (ruby-2.0.0).
|
178
232
|
</div>
|
data/doc/index.html
CHANGED
@@ -97,25 +97,25 @@
|
|
97
97
|
|
98
98
|
<p>Waits for a request, prints it to STDOUT, and thanks the client for it.</p>
|
99
99
|
|
100
|
-
<pre class="code ruby"><code class="ruby">require
|
101
|
-
|
102
|
-
server = EZMQ::Server.new
|
103
|
-
server.listen do |message|
|
104
|
-
puts message
|
105
|
-
'Thanks for the message!' # The return of the block is sent to the client.
|
106
|
-
end
|
100
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ezmq</span><span class='tstring_end'>'</span></span>
|
107
101
|
|
108
|
-
|
109
|
-
|
110
|
-
|
102
|
+
<span class='id identifier rubyid_server'>server</span> <span class='op'>=</span> <span class='const'>EZMQ</span><span class='op'>::</span><span class='const'>Server</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
|
103
|
+
<span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_message'>message</span><span class='op'>|</span>
|
104
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='id identifier rubyid_message'>message</span>
|
105
|
+
<span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Thanks for the message!</span><span class='tstring_end'>'</span></span> <span class='comment'># The return of the block is sent to the client.
|
106
|
+
</span><span class='kw'>end</span>
|
111
107
|
</code></pre>
|
112
108
|
|
113
|
-
<
|
114
|
-
require 'json'</p>
|
109
|
+
<h2>JSON Echo Server</h2>
|
115
110
|
|
116
|
-
<p>
|
117
|
-
|
118
|
-
|
111
|
+
<p>Waits for JSON message, decodes it, re-encodes it, and sends it back.</p>
|
112
|
+
|
113
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ezmq</span><span class='tstring_end'>'</span></span>
|
114
|
+
<span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>json</span><span class='tstring_end'>'</span></span>
|
115
|
+
|
116
|
+
<span class='id identifier rubyid_server'>server</span> <span class='op'>=</span> <span class='const'>EZMQ</span><span class='op'>::</span><span class='const'>Server</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='label'>encode:</span> <span class='tlambda'>-></span> <span class='id identifier rubyid_m'>m</span> <span class='tlambeg'>{</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_dump'>dump</span> <span class='id identifier rubyid_m'>m</span> <span class='rbrace'>}</span><span class='comma'>,</span> <span class='label'>decode:</span> <span class='tlambda'>-></span> <span class='id identifier rubyid_m'>m</span> <span class='tlambeg'>{</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_load'>load</span> <span class='id identifier rubyid_m'>m</span> <span class='rbrace'>}</span>
|
117
|
+
<span class='id identifier rubyid_server'>server</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span>
|
118
|
+
</code></pre>
|
119
119
|
|
120
120
|
<h2>JSON Synchronous Client Request</h2>
|
121
121
|
|
@@ -153,6 +153,60 @@ server.listen
|
|
153
153
|
<span class='id identifier rubyid_subscriber'>subscriber</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span>
|
154
154
|
</code></pre>
|
155
155
|
|
156
|
+
<h2>Pipeline Work Generator</h2>
|
157
|
+
|
158
|
+
<p>Generates work, distributes it to workers via PUSH socket.</p>
|
159
|
+
|
160
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ezmq</span><span class='tstring_end'>'</span></span>
|
161
|
+
<span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>json</span><span class='tstring_end'>'</span></span>
|
162
|
+
|
163
|
+
<span class='id identifier rubyid_generator'>generator</span> <span class='op'>=</span> <span class='const'>EZMQ</span><span class='op'>::</span><span class='const'>Pusher</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='symbol'>:bind</span><span class='comma'>,</span> <span class='label'>encode:</span> <span class='tlambda'>-></span> <span class='id identifier rubyid_m'>m</span> <span class='tlambeg'>{</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_dump'>dump</span> <span class='id identifier rubyid_m'>m</span> <span class='rbrace'>}</span>
|
164
|
+
|
165
|
+
<span class='int'>15</span><span class='period'>.</span><span class='id identifier rubyid_times'>times</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_id'>id</span><span class='op'>|</span>
|
166
|
+
<span class='id identifier rubyid_work'>work</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>id</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>task_</span><span class='embexpr_beg'>#{</span> <span class='id identifier rubyid_id'>id</span> <span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>request</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>100</span><span class='tstring_end'>'</span></span> <span class='rbrace'>}</span>
|
167
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Generated work </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_work'>work</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
168
|
+
<span class='id identifier rubyid_generator'>generator</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span> <span class='id identifier rubyid_work'>work</span>
|
169
|
+
<span class='kw'>end</span>
|
170
|
+
</code></pre>
|
171
|
+
|
172
|
+
<h2>Pipeline Workers</h2>
|
173
|
+
|
174
|
+
<p>3 worker threads PULL work from the Generator and PUSH results to the Collector.</p>
|
175
|
+
|
176
|
+
<p>The 'work' here is generating a random number between 1 and a requested maximum.</p>
|
177
|
+
|
178
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ezmq</span><span class='tstring_end'>'</span></span>
|
179
|
+
<span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>json</span><span class='tstring_end'>'</span></span>
|
180
|
+
|
181
|
+
<span class='id identifier rubyid_workers'>workers</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
|
182
|
+
|
183
|
+
<span class='int'>3</span><span class='period'>.</span><span class='id identifier rubyid_times'>times</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_id'>id</span><span class='op'>|</span>
|
184
|
+
<span class='id identifier rubyid_workers'>workers</span> <span class='op'><<</span> <span class='const'>Thread</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='kw'>do</span>
|
185
|
+
<span class='id identifier rubyid_input'>input</span> <span class='op'>=</span> <span class='const'>EZMQ</span><span class='op'>::</span><span class='const'>Puller</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='symbol'>:connect</span><span class='comma'>,</span> <span class='label'>decode:</span> <span class='tlambda'>-></span> <span class='id identifier rubyid_m'>m</span> <span class='tlambeg'>{</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_load'>load</span> <span class='id identifier rubyid_m'>m</span> <span class='rbrace'>}</span>
|
186
|
+
<span class='id identifier rubyid_output'>output</span> <span class='op'>=</span> <span class='const'>EZMQ</span><span class='op'>::</span><span class='const'>Pusher</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='label'>port:</span> <span class='int'>5556</span><span class='comma'>,</span> <span class='label'>encode:</span> <span class='tlambda'>-></span> <span class='id identifier rubyid_m'>m</span> <span class='tlambeg'>{</span> <span class='const'>JSON</span><span class='period'>.</span><span class='id identifier rubyid_dump'>dump</span> <span class='id identifier rubyid_m'>m</span> <span class='rbrace'>}</span>
|
187
|
+
<span class='id identifier rubyid_input'>input</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_work'>work</span><span class='op'>|</span>
|
188
|
+
<span class='id identifier rubyid_puts'>puts</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>Worker </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_id'>id</span><span class='embexpr_end'>}</span><span class='tstring_content'> pulled </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_work'>work</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
189
|
+
<span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='id identifier rubyid_rand'>rand</span><span class='lparen'>(</span><span class='int'>1</span><span class='op'>..</span><span class='id identifier rubyid_work'>work</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>request</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span><span class='rparen'>)</span>
|
190
|
+
<span class='id identifier rubyid_report'>report</span> <span class='op'>=</span> <span class='lbrace'>{</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>id</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='id identifier rubyid_work'>work</span><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>id</span><span class='tstring_end'>'</span></span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>result</span><span class='tstring_end'>'</span></span> <span class='op'>=></span> <span class='id identifier rubyid_result'>result</span> <span class='rbrace'>}</span>
|
191
|
+
<span class='id identifier rubyid_output'>output</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span> <span class='id identifier rubyid_report'>report</span>
|
192
|
+
<span class='kw'>end</span>
|
193
|
+
<span class='kw'>end</span>
|
194
|
+
<span class='kw'>end</span>
|
195
|
+
|
196
|
+
<span class='id identifier rubyid_workers'>workers</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:join</span><span class='rparen'>)</span>
|
197
|
+
</code></pre>
|
198
|
+
|
199
|
+
<h2>Pipeline Results Collector</h2>
|
200
|
+
|
201
|
+
<p>PULLs results from workers and prints it to STDOUT.</p>
|
202
|
+
|
203
|
+
<pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>ezmq</span><span class='tstring_end'>'</span></span>
|
204
|
+
<span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>json</span><span class='tstring_end'>'</span></span>
|
205
|
+
|
206
|
+
<span class='id identifier rubyid_collector'>collector</span> <span class='op'>=</span> <span class='const'>EZMQ</span><span class='op'>::</span><span class='const'>Puller</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='label'>port:</span> <span class='int'>5556</span>
|
207
|
+
<span class='id identifier rubyid_collector'>collector</span><span class='period'>.</span><span class='id identifier rubyid_listen'>listen</span>
|
208
|
+
</code></pre>
|
209
|
+
|
156
210
|
<h1>Operating System Notes</h1>
|
157
211
|
|
158
212
|
<p>As this relies on <a href="https://github.com/chuckremes/ffi-rzmq">ffi-rzmq</a>, you will need to have the zeromq libraries available.</p>
|
@@ -172,7 +226,7 @@ sudo aptitude install libzmq3-dev
|
|
172
226
|
</div></div>
|
173
227
|
|
174
228
|
<div id="footer">
|
175
|
-
Generated on
|
229
|
+
Generated on Sun Jan 11 14:20:10 2015 by
|
176
230
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
177
231
|
0.8.7.6 (ruby-2.0.0).
|
178
232
|
</div>
|