ionian 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1041,12 +1041,12 @@ true.</p>
1041
1041
  <pre class="lines">
1042
1042
 
1043
1043
 
1044
- 282
1045
1044
  283
1046
- 284</pre>
1045
+ 284
1046
+ 285</pre>
1047
1047
  </td>
1048
1048
  <td>
1049
- <pre class="code"><span class="info file"># File 'lib/ionian/extension/socket.rb', line 282</span>
1049
+ <pre class="code"><span class="info file"># File 'lib/ionian/extension/socket.rb', line 283</span>
1050
1050
 
1051
1051
  <span class='kw'>def</span> <span class='id identifier rubyid_multicast'>multicast</span> <span class='id identifier rubyid_address'>address</span>
1052
1052
  <span class='id identifier rubyid_address'>address</span> <span class='op'>&gt;=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>224.0.0.0</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>and</span> <span class='id identifier rubyid_address'>address</span> <span class='op'>&lt;=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>239.255.255.255</span><span class='tstring_end'>&#39;</span></span> <span class='op'>?</span> <span class='kw'>true</span> <span class='op'>:</span> <span class='kw'>false</span>
@@ -1082,12 +1082,12 @@ true.</p>
1082
1082
  <pre class="lines">
1083
1083
 
1084
1084
 
1085
- 286
1086
1085
  287
1087
- 288</pre>
1086
+ 288
1087
+ 289</pre>
1088
1088
  </td>
1089
1089
  <td>
1090
- <pre class="code"><span class="info file"># File 'lib/ionian/extension/socket.rb', line 286</span>
1090
+ <pre class="code"><span class="info file"># File 'lib/ionian/extension/socket.rb', line 287</span>
1091
1091
 
1092
1092
  <span class='kw'>def</span> <span class='id identifier rubyid_multicast'>multicast</span> <span class='id identifier rubyid_address'>address</span>
1093
1093
  <span class='id identifier rubyid_address'>address</span> <span class='op'>&gt;=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>224.0.0.0</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>and</span> <span class='id identifier rubyid_address'>address</span> <span class='op'>&lt;=</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>239.255.255.255</span><span class='tstring_end'>&#39;</span></span> <span class='op'>?</span> <span class='kw'>true</span> <span class='op'>:</span> <span class='kw'>false</span>
@@ -1867,13 +1867,13 @@ IP_MULTICAST_TTL )</p>
1867
1867
  <pre class="lines">
1868
1868
 
1869
1869
 
1870
- 254
1871
1870
  255
1872
1871
  256
1873
- 257</pre>
1872
+ 257
1873
+ 258</pre>
1874
1874
  </td>
1875
1875
  <td>
1876
- <pre class="code"><span class="info file"># File 'lib/ionian/extension/socket.rb', line 254</span>
1876
+ <pre class="code"><span class="info file"># File 'lib/ionian/extension/socket.rb', line 255</span>
1877
1877
 
1878
1878
  <span class='kw'>def</span> <span class='id identifier rubyid_ipv6_multicast_hops'>ipv6_multicast_hops</span>
1879
1879
  <span class='comment'># TODO: Implement IPv6
@@ -1923,13 +1923,13 @@ IP_MULTICAST_TTL )</p>
1923
1923
  <pre class="lines">
1924
1924
 
1925
1925
 
1926
- 260
1927
1926
  261
1928
1927
  262
1929
- 263</pre>
1928
+ 263
1929
+ 264</pre>
1930
1930
  </td>
1931
1931
  <td>
1932
- <pre class="code"><span class="info file"># File 'lib/ionian/extension/socket.rb', line 260</span>
1932
+ <pre class="code"><span class="info file"># File 'lib/ionian/extension/socket.rb', line 261</span>
1933
1933
 
1934
1934
  <span class='kw'>def</span> <span class='id identifier rubyid_ipv6_multicast_hops='>ipv6_multicast_hops=</span> <span class='id identifier rubyid_value'>value</span>
1935
1935
  <span class='comment'># TODO: Implement IPv6
@@ -2015,6 +2015,19 @@ IP_MULTICAST_TTL )</p>
2015
2015
  </div>
2016
2016
  <div class="tags">
2017
2017
 
2018
+ <p class="tag_title">Raises:</p>
2019
+ <ul class="raise">
2020
+
2021
+ <li>
2022
+
2023
+
2024
+ <span class='type'>(<tt>NotImplementedError</tt>)</span>
2025
+
2026
+
2027
+
2028
+ </li>
2029
+
2030
+ </ul>
2018
2031
 
2019
2032
  </div><table class="source_code">
2020
2033
  <tr>
@@ -2024,14 +2037,16 @@ IP_MULTICAST_TTL )</p>
2024
2037
 
2025
2038
  249
2026
2039
  250
2027
- 251</pre>
2040
+ 251
2041
+ 252</pre>
2028
2042
  </td>
2029
2043
  <td>
2030
2044
  <pre class="code"><span class="info file"># File 'lib/ionian/extension/socket.rb', line 249</span>
2031
2045
 
2032
2046
  <span class='kw'>def</span> <span class='id identifier rubyid_ipv6_multicast_if='>ipv6_multicast_if=</span> <span class='id identifier rubyid_value'>value</span>
2033
2047
  <span class='comment'># TODO: Implement IPv6
2034
- </span><span class='kw'>end</span></pre>
2048
+ </span> <span class='id identifier rubyid_raise'>raise</span> <span class='const'>NotImplementedError</span>
2049
+ <span class='kw'>end</span></pre>
2035
2050
  </td>
2036
2051
  </tr>
2037
2052
  </table>
@@ -2080,13 +2095,13 @@ IP_MULTICAST_TTL )</p>
2080
2095
  <pre class="lines">
2081
2096
 
2082
2097
 
2083
- 266
2084
2098
  267
2085
2099
  268
2086
- 269</pre>
2100
+ 269
2101
+ 270</pre>
2087
2102
  </td>
2088
2103
  <td>
2089
- <pre class="code"><span class="info file"># File 'lib/ionian/extension/socket.rb', line 266</span>
2104
+ <pre class="code"><span class="info file"># File 'lib/ionian/extension/socket.rb', line 267</span>
2090
2105
 
2091
2106
  <span class='kw'>def</span> <span class='id identifier rubyid_ipv6_multicast_loop'>ipv6_multicast_loop</span>
2092
2107
  <span class='comment'># TODO: Implement IPv6
@@ -2136,13 +2151,13 @@ IP_MULTICAST_TTL )</p>
2136
2151
  <pre class="lines">
2137
2152
 
2138
2153
 
2139
- 274
2140
2154
  275
2141
2155
  276
2142
- 277</pre>
2156
+ 277
2157
+ 278</pre>
2143
2158
  </td>
2144
2159
  <td>
2145
- <pre class="code"><span class="info file"># File 'lib/ionian/extension/socket.rb', line 274</span>
2160
+ <pre class="code"><span class="info file"># File 'lib/ionian/extension/socket.rb', line 275</span>
2146
2161
 
2147
2162
  <span class='kw'>def</span> <span class='id identifier rubyid_ipv6_multicast_loop='>ipv6_multicast_loop=</span> <span class='id identifier rubyid_value'>value</span>
2148
2163
  <span class='comment'># TODO: Implement IPv6
@@ -2302,12 +2317,12 @@ packet.</p>
2302
2317
  <pre class="lines">
2303
2318
 
2304
2319
 
2305
- 290
2306
2320
  291
2307
- 292</pre>
2321
+ 292
2322
+ 293</pre>
2308
2323
  </td>
2309
2324
  <td>
2310
- <pre class="code"><span class="info file"># File 'lib/ionian/extension/socket.rb', line 290</span>
2325
+ <pre class="code"><span class="info file"># File 'lib/ionian/extension/socket.rb', line 291</span>
2311
2326
 
2312
2327
  <span class='kw'>def</span> <span class='id identifier rubyid_multicast'>multicast</span>
2313
2328
  <span class='const'>Ionian</span><span class='op'>::</span><span class='const'>Extension</span><span class='op'>::</span><span class='const'>Socket</span><span class='period'>.</span><span class='id identifier rubyid_multicast'>multicast</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_remote_address'>remote_address</span><span class='period'>.</span><span class='id identifier rubyid_ip_address'>ip_address</span>
@@ -2637,7 +2652,7 @@ packet.</p>
2637
2652
  </div>
2638
2653
 
2639
2654
  <div id="footer">
2640
- Generated on Wed Jan 28 16:07:20 2015 by
2655
+ Generated on Wed Feb 11 16:57:31 2015 by
2641
2656
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
2642
2657
  0.8.7.6 (ruby-2.1.5).
2643
2658
  </div>
@@ -102,8 +102,8 @@
102
102
  <h2>Overview</h2><div class="docstring">
103
103
  <div class="discussion">
104
104
 
105
- <p>A socket manager that wraps an <span class='object_link'><a href="Socket.html" title="Ionian::Socket (class)">Socket</a></span> and can perform functions
106
- like heartbeating and auto-reconnect.</p>
105
+ <p>A socket manager that performs functions like heartbeating and
106
+ auto-reconnect.</p>
107
107
 
108
108
 
109
109
  </div>
@@ -213,10 +213,12 @@ like heartbeating and auto-reconnect.</p>
213
213
  <li class="public ">
214
214
  <span class="summary_signature">
215
215
 
216
- <a href="#method_missing-instance_method" title="#method_missing (instance method)">- (Object) <strong>method_missing</strong>(meth, *args, &amp;block) </a>
216
+ <a href="#register_match_handler-instance_method" title="#register_match_handler (instance method)">- (Block) <strong>register_match_handler</strong> {|MatchData, self| ... }</a>
217
217
 
218
218
 
219
219
 
220
+ (also: #on_match)
221
+
220
222
  </span>
221
223
 
222
224
 
@@ -228,7 +230,8 @@ like heartbeating and auto-reconnect.</p>
228
230
 
229
231
 
230
232
  <span class="summary_desc"><div class='inline'>
231
- <p>Pass unhandled methods to @socket.</p>
233
+ <p>Register a block to be called when <span class='object_link'><a href="Extension/IO.html#run_match-instance_method" title="Ionian::Extension::IO#run_match (method)">Extension::IO#run_match</a></span>
234
+ receives matched data.</p>
232
235
  </div></span>
233
236
 
234
237
  </li>
@@ -237,11 +240,11 @@ like heartbeating and auto-reconnect.</p>
237
240
  <li class="public ">
238
241
  <span class="summary_signature">
239
242
 
240
- <a href="#register_error_handler-instance_method" title="#register_error_handler (instance method)">- (Block) <strong>register_error_handler</strong> {|Exception, self| ... }</a>
243
+ <a href="#register_status_handler-instance_method" title="#register_status_handler (instance method)">- (Block) <strong>register_status_handler</strong> {|status, self| ... }</a>
241
244
 
242
245
 
243
246
 
244
- (also: #on_error)
247
+ (also: #on_status_change)
245
248
 
246
249
  </span>
247
250
 
@@ -254,8 +257,7 @@ like heartbeating and auto-reconnect.</p>
254
257
 
255
258
 
256
259
  <span class="summary_desc"><div class='inline'>
257
- <p>Register a block to be called when <span class='object_link'><a href="Extension/IO.html#run_match-instance_method" title="Ionian::Extension::IO#run_match (method)">Extension::IO#run_match</a></span> raises
258
- an error.</p>
260
+ <p>Register a block to be called when there is a change in socket status.</p>
259
261
  </div></span>
260
262
 
261
263
  </li>
@@ -264,12 +266,10 @@ an error.</p>
264
266
  <li class="public ">
265
267
  <span class="summary_signature">
266
268
 
267
- <a href="#register_match_handler-instance_method" title="#register_match_handler (instance method)">- (Block) <strong>register_match_handler</strong> {|MatchData, self| ... }</a>
269
+ <a href="#run-instance_method" title="#run (instance method)">- (Object) <strong>run</strong> </a>
268
270
 
269
271
 
270
272
 
271
- (also: #on_match)
272
-
273
273
  </span>
274
274
 
275
275
 
@@ -281,8 +281,7 @@ an error.</p>
281
281
 
282
282
 
283
283
  <span class="summary_desc"><div class='inline'>
284
- <p>Register a block to be called when <span class='object_link'><a href="Extension/IO.html#run_match-instance_method" title="Ionian::Extension::IO#run_match (method)">Extension::IO#run_match</a></span>
285
- receives matched data.</p>
284
+ <p>Start the event loop.</p>
286
285
  </div></span>
287
286
 
288
287
  </li>
@@ -291,7 +290,7 @@ receives matched data.</p>
291
290
  <li class="public ">
292
291
  <span class="summary_signature">
293
292
 
294
- <a href="#respond_to_missing%3F-instance_method" title="#respond_to_missing? (instance method)">- (Boolean) <strong>respond_to_missing?</strong>(meth, *args) </a>
293
+ <a href="#unregister_match_handler-instance_method" title="#unregister_match_handler (instance method)">- (Object) <strong>unregister_match_handler</strong>(&amp;block) </a>
295
294
 
296
295
 
297
296
 
@@ -305,7 +304,9 @@ receives matched data.</p>
305
304
 
306
305
 
307
306
 
308
- <span class="summary_desc"><div class='inline'></div></span>
307
+ <span class="summary_desc"><div class='inline'>
308
+ <p>Unregister a block from being called when matched data is received.</p>
309
+ </div></span>
309
310
 
310
311
  </li>
311
312
 
@@ -313,7 +314,7 @@ receives matched data.</p>
313
314
  <li class="public ">
314
315
  <span class="summary_signature">
315
316
 
316
- <a href="#unregister_error_handler-instance_method" title="#unregister_error_handler (instance method)">- (Object) <strong>unregister_error_handler</strong>(&amp;block) </a>
317
+ <a href="#unregister_status_handler-instance_method" title="#unregister_status_handler (instance method)">- (Object) <strong>unregister_status_handler</strong>(&amp;block) </a>
317
318
 
318
319
 
319
320
 
@@ -328,8 +329,8 @@ receives matched data.</p>
328
329
 
329
330
 
330
331
  <span class="summary_desc"><div class='inline'>
331
- <p>Unregister a block from being called when a IO#run_match error is
332
- raised.</p>
332
+ <p>Unregister a block from being called when there is a change in socket
333
+ status.</p>
333
334
  </div></span>
334
335
 
335
336
  </li>
@@ -338,7 +339,7 @@ raised.</p>
338
339
  <li class="public ">
339
340
  <span class="summary_signature">
340
341
 
341
- <a href="#unregister_match_handler-instance_method" title="#unregister_match_handler (instance method)">- (Object) <strong>unregister_match_handler</strong>(&amp;block) </a>
342
+ <a href="#write-instance_method" title="#write (instance method)">- (Object) <strong>write</strong>(data) </a>
342
343
 
343
344
 
344
345
 
@@ -353,7 +354,7 @@ raised.</p>
353
354
 
354
355
 
355
356
  <span class="summary_desc"><div class='inline'>
356
- <p>Unregister a block from being called when matched data is received.</p>
357
+ <p>Write data to the socket.</p>
357
358
  </div></span>
358
359
 
359
360
  </li>
@@ -430,6 +431,19 @@ the auto-reconnect loop.</p>
430
431
  </ul>
431
432
 
432
433
 
434
+ <p class="tag_title">Raises:</p>
435
+ <ul class="raise">
436
+
437
+ <li>
438
+
439
+
440
+ <span class='type'>(<tt>NotImplementedError</tt>)</span>
441
+
442
+
443
+
444
+ </li>
445
+
446
+ </ul>
433
447
 
434
448
  <p class="tag_title">See Also:</p>
435
449
  <ul class="see">
@@ -444,7 +458,6 @@ the auto-reconnect loop.</p>
444
458
  <pre class="lines">
445
459
 
446
460
 
447
- 17
448
461
  18
449
462
  19
450
463
  20
@@ -452,75 +465,26 @@ the auto-reconnect loop.</p>
452
465
  22
453
466
  23
454
467
  24
455
- 25</pre>
468
+ 25
469
+ 26
470
+ 27
471
+ 28
472
+ 29</pre>
456
473
  </td>
457
474
  <td>
458
- <pre class="code"><span class="info file"># File 'lib/ionian/managed_socket.rb', line 17</span>
475
+ <pre class="code"><span class="info file"># File 'lib/ionian/managed_socket.rb', line 18</span>
459
476
 
460
477
  <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span> <span class='op'>**</span><span class='id identifier rubyid_kwargs'>kwargs</span>
461
478
  <span class='ivar'>@auto_reconnect</span> <span class='op'>=</span> <span class='id identifier rubyid_kwargs'>kwargs</span><span class='period'>.</span><span class='id identifier rubyid_delete'>delete</span><span class='lparen'>(</span><span class='symbol'>:auto_reconnect</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='kw'>false</span>
479
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>NotImplementedError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>:auto_reconnect must be set true.</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>unless</span> <span class='ivar'>@auto_reconnect</span>
462
480
  <span class='ivar'>@kwargs</span> <span class='op'>=</span> <span class='id identifier rubyid_kwargs'>kwargs</span>
463
481
 
464
- <span class='ivar'>@match_handlers</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
465
- <span class='ivar'>@error_handlers</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
466
-
467
- <span class='id identifier rubyid_create_socket'>create_socket</span>
468
- <span class='kw'>end</span></pre>
469
- </td>
470
- </tr>
471
- </table>
472
- </div>
473
-
474
- </div>
475
- <div id="method_missing_details" class="method_details_list">
476
- <h2>Dynamic Method Handling</h2>
477
- <p class="notice this">
478
- This class handles dynamic methods through the <tt>method_missing</tt> method
479
-
480
- </p>
481
-
482
- <div class="method_details first">
483
- <h3 class="signature first" id="method_missing-instance_method">
484
-
485
- - (<tt>Object</tt>) <strong>method_missing</strong>(meth, *args, &amp;block)
486
-
487
-
488
-
489
-
490
-
491
- </h3><div class="docstring">
492
- <div class="discussion">
493
-
494
- <p>Pass unhandled methods to @socket.</p>
495
-
496
-
497
- </div>
498
- </div>
499
- <div class="tags">
482
+ <span class='ivar'>@match_handlers</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
483
+ <span class='ivar'>@status_handlers</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
500
484
 
501
-
502
- <p class="tag_title">See Also:</p>
503
- <ul class="see">
504
-
505
- <li><span class='object_link'><a href="Socket.html" title="Ionian::Socket (class)">Socket</a></span></li>
506
-
507
- </ul>
508
-
509
- </div><table class="source_code">
510
- <tr>
511
- <td>
512
- <pre class="lines">
513
-
514
-
515
- 77
516
- 78
517
- 79</pre>
518
- </td>
519
- <td>
520
- <pre class="code"><span class="info file"># File 'lib/ionian/managed_socket.rb', line 77</span>
521
-
522
- <span class='kw'>def</span> <span class='id identifier rubyid_method_missing'>method_missing</span> <span class='id identifier rubyid_meth'>meth</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span>
523
- <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid___send__'>__send__</span> <span class='id identifier rubyid_meth'>meth</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span>
485
+ <span class='ivar'>@write_queue</span> <span class='op'>=</span> <span class='const'>Queue</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
486
+ <span class='ivar'>@write_pipe_rx</span><span class='comma'>,</span> <span class='ivar'>@write_pipe_tx</span> <span class='op'>=</span> <span class='const'>IO</span><span class='period'>.</span><span class='id identifier rubyid_pipe'>pipe</span>
487
+ <span class='ivar'>@write_pipe_rx</span><span class='period'>.</span><span class='id identifier rubyid_extend'>extend</span> <span class='const'>Ionian</span><span class='op'>::</span><span class='const'>Extension</span><span class='op'>::</span><span class='const'>IO</span>
524
488
  <span class='kw'>end</span></pre>
525
489
  </td>
526
490
  </tr>
@@ -560,12 +524,12 @@ the auto-reconnect loop.</p>
560
524
  <pre class="lines">
561
525
 
562
526
 
563
- 10
564
527
  11
565
- 12</pre>
528
+ 12
529
+ 13</pre>
566
530
  </td>
567
531
  <td>
568
- <pre class="code"><span class="info file"># File 'lib/ionian/managed_socket.rb', line 10</span>
532
+ <pre class="code"><span class="info file"># File 'lib/ionian/managed_socket.rb', line 11</span>
569
533
 
570
534
  <span class='kw'>def</span> <span class='id identifier rubyid_auto_reconnect'>auto_reconnect</span>
571
535
  <span class='ivar'>@auto_reconnect</span>
@@ -608,17 +572,31 @@ the auto-reconnect loop.</p>
608
572
  <pre class="lines">
609
573
 
610
574
 
611
- 29
612
- 30
613
- 31
614
- 32</pre>
575
+ 33
576
+ 34
577
+ 35
578
+ 36
579
+ 37
580
+ 38
581
+ 39
582
+ 40
583
+ 41
584
+ 42
585
+ 43</pre>
615
586
  </td>
616
587
  <td>
617
- <pre class="code"><span class="info file"># File 'lib/ionian/managed_socket.rb', line 29</span>
588
+ <pre class="code"><span class="info file"># File 'lib/ionian/managed_socket.rb', line 33</span>
618
589
 
619
590
  <span class='kw'>def</span> <span class='id identifier rubyid_close'>close</span>
620
- <span class='ivar'>@auto_reconnect</span> <span class='op'>=</span> <span class='kw'>false</span>
621
- <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_close'>close</span> <span class='kw'>unless</span> <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_closed?'>closed?</span>
591
+ <span class='kw'>unless</span> <span class='ivar'>@closed</span> <span class='op'>==</span> <span class='kw'>true</span>
592
+ <span class='ivar'>@auto_reconnect</span> <span class='op'>=</span> <span class='kw'>false</span>
593
+ <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_close'>close</span> <span class='kw'>if</span> <span class='ivar'>@socket</span> <span class='kw'>and</span> <span class='kw'>not</span> <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_closed?'>closed?</span>
594
+ <span class='ivar'>@write_pipe_tx</span><span class='period'>.</span><span class='id identifier rubyid_close'>close</span> <span class='kw'>rescue</span> <span class='const'>IOError</span>
595
+ <span class='ivar'>@write_pipe_rx</span><span class='period'>.</span><span class='id identifier rubyid_close'>close</span> <span class='kw'>rescue</span> <span class='const'>IOError</span>
596
+ <span class='ivar'>@write_queue</span> <span class='op'>=</span> <span class='kw'>nil</span>
597
+
598
+ <span class='ivar'>@closed</span> <span class='op'>=</span> <span class='kw'>true</span>
599
+ <span class='kw'>end</span>
622
600
  <span class='kw'>end</span></pre>
623
601
  </td>
624
602
  </tr>
@@ -626,14 +604,14 @@ the auto-reconnect loop.</p>
626
604
  </div>
627
605
 
628
606
  <div class="method_details ">
629
- <h3 class="signature " id="register_error_handler-instance_method">
607
+ <h3 class="signature " id="register_match_handler-instance_method">
630
608
 
631
- - (<tt>Block</tt>) <strong>register_error_handler</strong> {|Exception, self| ... }
609
+ - (<tt>Block</tt>) <strong>register_match_handler</strong> {|MatchData, self| ... }
632
610
 
633
611
 
634
612
 
635
613
  <span class="aliases">Also known as:
636
- <span class="names"><span id='on_error-instance_method'>on_error</span></span>
614
+ <span class="names"><span id='on_match-instance_method'>on_match</span></span>
637
615
  </span>
638
616
 
639
617
 
@@ -641,8 +619,8 @@ the auto-reconnect loop.</p>
641
619
  </h3><div class="docstring">
642
620
  <div class="discussion">
643
621
 
644
- <p>Register a block to be called when <span class='object_link'><a href="Extension/IO.html#run_match-instance_method" title="Ionian::Extension::IO#run_match (method)">Extension::IO#run_match</a></span> raises
645
- an error. Method callbacks can be registered with
622
+ <p>Register a block to be called when <span class='object_link'><a href="Extension/IO.html#run_match-instance_method" title="Ionian::Extension::IO#run_match (method)">Extension::IO#run_match</a></span>
623
+ receives matched data. Method callbacks can be registered with
646
624
  &amp;object.method(:method).</p>
647
625
 
648
626
 
@@ -656,7 +634,7 @@ an error. Method callbacks can be registered with
656
634
  <li>
657
635
 
658
636
 
659
- <span class='type'>(<tt>Exception</tt>, <tt>self</tt>)</span>
637
+ <span class='type'>(<tt>MatchData</tt>, <tt>self</tt>)</span>
660
638
 
661
639
 
662
640
 
@@ -675,7 +653,7 @@ an error. Method callbacks can be registered with
675
653
 
676
654
  &mdash;
677
655
  <div class='inline'>
678
- <p>a reference to the given block.</p>
656
+ <p>the given block.</p>
679
657
  </div>
680
658
 
681
659
  </li>
@@ -688,18 +666,18 @@ an error. Method callbacks can be registered with
688
666
  <pre class="lines">
689
667
 
690
668
 
691
- 59
692
- 60
693
- 61
694
- 62
695
- 63</pre>
669
+ 84
670
+ 85
671
+ 86
672
+ 87
673
+ 88</pre>
696
674
  </td>
697
675
  <td>
698
- <pre class="code"><span class="info file"># File 'lib/ionian/managed_socket.rb', line 59</span>
676
+ <pre class="code"><span class="info file"># File 'lib/ionian/managed_socket.rb', line 84</span>
699
677
 
700
- <span class='kw'>def</span> <span class='id identifier rubyid_register_error_handler'>register_error_handler</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span>
701
- <span class='ivar'>@error_handlers</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_block'>block</span> <span class='kw'>unless</span> <span class='ivar'>@error_handlers</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span> <span class='id identifier rubyid_block'>block</span>
702
- <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_register_error_handler'>register_error_handler</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span> <span class='kw'>if</span> <span class='ivar'>@socket</span>
678
+ <span class='kw'>def</span> <span class='id identifier rubyid_register_match_handler'>register_match_handler</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span>
679
+ <span class='ivar'>@match_handlers</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_block'>block</span> <span class='kw'>unless</span> <span class='ivar'>@match_handlers</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span> <span class='id identifier rubyid_block'>block</span>
680
+ <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_register_match_handler'>register_match_handler</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span> <span class='kw'>if</span> <span class='ivar'>@socket</span>
703
681
  <span class='id identifier rubyid_block'>block</span>
704
682
  <span class='kw'>end</span></pre>
705
683
  </td>
@@ -708,14 +686,14 @@ an error. Method callbacks can be registered with
708
686
  </div>
709
687
 
710
688
  <div class="method_details ">
711
- <h3 class="signature " id="register_match_handler-instance_method">
689
+ <h3 class="signature " id="register_status_handler-instance_method">
712
690
 
713
- - (<tt>Block</tt>) <strong>register_match_handler</strong> {|MatchData, self| ... }
691
+ - (<tt>Block</tt>) <strong>register_status_handler</strong> {|status, self| ... }
714
692
 
715
693
 
716
694
 
717
695
  <span class="aliases">Also known as:
718
- <span class="names"><span id='on_match-instance_method'>on_match</span></span>
696
+ <span class="names"><span id='on_status_change-instance_method'>on_status_change</span></span>
719
697
  </span>
720
698
 
721
699
 
@@ -723,9 +701,8 @@ an error. Method callbacks can be registered with
723
701
  </h3><div class="docstring">
724
702
  <div class="discussion">
725
703
 
726
- <p>Register a block to be called when <span class='object_link'><a href="Extension/IO.html#run_match-instance_method" title="Ionian::Extension::IO#run_match (method)">Extension::IO#run_match</a></span>
727
- receives matched data. Method callbacks can be registered with
728
- &amp;object.method(:method).</p>
704
+ <p>Register a block to be called when there is a change in socket status.
705
+ Method callbacks can be registered with &amp;object.method(:method).</p>
729
706
 
730
707
 
731
708
  </div>
@@ -738,7 +715,7 @@ receives matched data. Method callbacks can be registered with
738
715
  <li>
739
716
 
740
717
 
741
- <span class='type'>(<tt>MatchData</tt>, <tt>self</tt>)</span>
718
+ <span class='type'>(<tt>status</tt>, <tt>self</tt>)</span>
742
719
 
743
720
 
744
721
 
@@ -757,9 +734,22 @@ receives matched data. Method callbacks can be registered with
757
734
 
758
735
  &mdash;
759
736
  <div class='inline'>
760
- <p>The given block.</p>
737
+ <p>a reference to the given block.</p>
761
738
  </div>
762
739
 
740
+ </li>
741
+
742
+ </ul>
743
+ <p class="tag_title">Raises:</p>
744
+ <ul class="raise">
745
+
746
+ <li>
747
+
748
+
749
+ <span class='type'>(<tt>NotImplementedError</tt>)</span>
750
+
751
+
752
+
763
753
  </li>
764
754
 
765
755
  </ul>
@@ -770,19 +760,15 @@ receives matched data. Method callbacks can be registered with
770
760
  <pre class="lines">
771
761
 
772
762
 
773
- 39
774
- 40
775
- 41
776
- 42
777
- 43</pre>
763
+ 103
764
+ 104
765
+ 105</pre>
778
766
  </td>
779
767
  <td>
780
- <pre class="code"><span class="info file"># File 'lib/ionian/managed_socket.rb', line 39</span>
768
+ <pre class="code"><span class="info file"># File 'lib/ionian/managed_socket.rb', line 103</span>
781
769
 
782
- <span class='kw'>def</span> <span class='id identifier rubyid_register_match_handler'>register_match_handler</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span>
783
- <span class='ivar'>@match_handlers</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_block'>block</span> <span class='kw'>unless</span> <span class='ivar'>@match_handlers</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span> <span class='id identifier rubyid_block'>block</span>
784
- <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_register_match_handler'>register_match_handler</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span> <span class='kw'>if</span> <span class='ivar'>@socket</span>
785
- <span class='id identifier rubyid_block'>block</span>
770
+ <span class='kw'>def</span> <span class='id identifier rubyid_register_status_handler'>register_status_handler</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span>
771
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>NotImplementedError</span>
786
772
  <span class='kw'>end</span></pre>
787
773
  </td>
788
774
  </tr>
@@ -790,9 +776,9 @@ receives matched data. Method callbacks can be registered with
790
776
  </div>
791
777
 
792
778
  <div class="method_details ">
793
- <h3 class="signature " id="respond_to_missing?-instance_method">
779
+ <h3 class="signature " id="run-instance_method">
794
780
 
795
- - (<tt>Boolean</tt>) <strong>respond_to_missing?</strong>(meth, *args)
781
+ - (<tt>Object</tt>) <strong>run</strong>
796
782
 
797
783
 
798
784
 
@@ -801,24 +787,98 @@ receives matched data. Method callbacks can be registered with
801
787
  </h3><div class="docstring">
802
788
  <div class="discussion">
803
789
 
790
+ <p>Start the event loop. Should be called after the handlers are registered.</p>
791
+
804
792
 
805
793
  </div>
806
794
  </div>
807
795
  <div class="tags">
808
796
 
809
- <p class="tag_title">Returns:</p>
810
- <ul class="return">
797
+
798
+ </div><table class="source_code">
799
+ <tr>
800
+ <td>
801
+ <pre class="lines">
802
+
803
+
804
+ 47
805
+ 48
806
+ 49
807
+ 50
808
+ 51
809
+ 52
810
+ 53
811
+ 54
812
+ 55
813
+ 56
814
+ 57
815
+ 58
816
+ 59
817
+ 60
818
+ 61
819
+ 62
820
+ 63
821
+ 64
822
+ 65
823
+ 66
824
+ 67
825
+ 68
826
+ 69
827
+ 70
828
+ 71</pre>
829
+ </td>
830
+ <td>
831
+ <pre class="code"><span class="info file"># File 'lib/ionian/managed_socket.rb', line 47</span>
832
+
833
+ <span class='kw'>def</span> <span class='id identifier rubyid_run'>run</span>
834
+ <span class='ivar'>@run_thread</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>
835
+ <span class='kw'>while</span> <span class='kw'>not</span> <span class='ivar'>@write_pipe_rx</span><span class='period'>.</span><span class='id identifier rubyid_closed?'>closed?</span>
836
+ <span class='kw'>begin</span>
837
+ <span class='id identifier rubyid_create_socket'>create_socket</span> <span class='kw'>if</span> <span class='lparen'>(</span><span class='kw'>not</span> <span class='ivar'>@socket</span> <span class='kw'>or</span> <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_closed?'>closed?</span><span class='rparen'>)</span> <span class='kw'>and</span> <span class='kw'>not</span> <span class='ivar'>@write_pipe_rx</span><span class='period'>.</span><span class='id identifier rubyid_closed?'>closed?</span>
838
+ <span class='id identifier rubyid_io'>io</span> <span class='op'>=</span> <span class='op'>::</span><span class='const'>IO</span><span class='period'>.</span><span class='id identifier rubyid_select'>select</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='ivar'>@write_pipe_rx</span><span class='comma'>,</span> <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_fd'>fd</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='kw'>nil</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span>
839
+
840
+ <span class='kw'>case</span> <span class='id identifier rubyid_io'>io</span>
841
+
842
+ <span class='kw'>when</span> <span class='ivar'>@write_pipe_rx</span>
843
+ <span class='ivar'>@write_pipe_rx</span><span class='period'>.</span><span class='id identifier rubyid_read_all'>read_all</span>
844
+ <span class='kw'>while</span> <span class='ivar'>@socket</span> <span class='kw'>and</span> <span class='kw'>not</span> <span class='ivar'>@write_queue</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
845
+ <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_write'>write</span> <span class='ivar'>@write_queue</span><span class='period'>.</span><span class='id identifier rubyid_shift'>shift</span>
846
+ <span class='kw'>end</span>
847
+
848
+ <span class='kw'>when</span> <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_fd'>fd</span>
849
+ <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_read_match'>read_match</span>
850
+
851
+ <span class='kw'>end</span>
852
+ <span class='kw'>rescue</span> <span class='const'>IOError</span> <span class='comment'># Far-end socket closed.
853
+ </span> <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_close'>close</span> <span class='kw'>if</span> <span class='ivar'>@socket</span> <span class='kw'>and</span> <span class='kw'>not</span> <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_closed?'>closed?</span>
854
+ <span class='kw'>end</span>
855
+ <span class='kw'>end</span>
856
+ <span class='kw'>end</span>
857
+ <span class='kw'>end</span></pre>
858
+ </td>
859
+ </tr>
860
+ </table>
861
+ </div>
862
+
863
+ <div class="method_details ">
864
+ <h3 class="signature " id="unregister_match_handler-instance_method">
811
865
 
812
- <li>
813
-
814
-
815
- <span class='type'>(<tt>Boolean</tt>)</span>
816
-
817
-
818
-
819
- </li>
866
+ - (<tt>Object</tt>) <strong>unregister_match_handler</strong>(&amp;block)
867
+
868
+
869
+
870
+
871
+
872
+ </h3><div class="docstring">
873
+ <div class="discussion">
874
+
875
+ <p>Unregister a block from being called when matched data is received.</p>
876
+
877
+
878
+ </div>
879
+ </div>
880
+ <div class="tags">
820
881
 
821
- </ul>
822
882
 
823
883
  </div><table class="source_code">
824
884
  <tr>
@@ -826,15 +886,19 @@ receives matched data. Method callbacks can be registered with
826
886
  <pre class="lines">
827
887
 
828
888
 
829
- 81
830
- 82
831
- 83</pre>
889
+ 93
890
+ 94
891
+ 95
892
+ 96
893
+ 97</pre>
832
894
  </td>
833
895
  <td>
834
- <pre class="code"><span class="info file"># File 'lib/ionian/managed_socket.rb', line 81</span>
896
+ <pre class="code"><span class="info file"># File 'lib/ionian/managed_socket.rb', line 93</span>
835
897
 
836
- <span class='kw'>def</span> <span class='id identifier rubyid_respond_to_missing?'>respond_to_missing?</span> <span class='id identifier rubyid_meth'>meth</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_args'>args</span>
837
- <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span> <span class='id identifier rubyid_meth'>meth</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_args'>args</span>
898
+ <span class='kw'>def</span> <span class='id identifier rubyid_unregister_match_handler'>unregister_match_handler</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span>
899
+ <span class='ivar'>@match_handlers</span><span class='period'>.</span><span class='id identifier rubyid_delete_if'>delete_if</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_o'>o</span><span class='op'>|</span> <span class='id identifier rubyid_o'>o</span> <span class='op'>==</span> <span class='id identifier rubyid_block'>block</span> <span class='rbrace'>}</span>
900
+ <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_unregister_match_handler'>unregister_match_handler</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span> <span class='kw'>if</span> <span class='ivar'>@socket</span>
901
+ <span class='id identifier rubyid_block'>block</span>
838
902
  <span class='kw'>end</span></pre>
839
903
  </td>
840
904
  </tr>
@@ -842,9 +906,9 @@ receives matched data. Method callbacks can be registered with
842
906
  </div>
843
907
 
844
908
  <div class="method_details ">
845
- <h3 class="signature " id="unregister_error_handler-instance_method">
909
+ <h3 class="signature " id="unregister_status_handler-instance_method">
846
910
 
847
- - (<tt>Object</tt>) <strong>unregister_error_handler</strong>(&amp;block)
911
+ - (<tt>Object</tt>) <strong>unregister_status_handler</strong>(&amp;block)
848
912
 
849
913
 
850
914
 
@@ -853,14 +917,27 @@ receives matched data. Method callbacks can be registered with
853
917
  </h3><div class="docstring">
854
918
  <div class="discussion">
855
919
 
856
- <p>Unregister a block from being called when a IO#run_match error is
857
- raised.</p>
920
+ <p>Unregister a block from being called when there is a change in socket
921
+ status.</p>
858
922
 
859
923
 
860
924
  </div>
861
925
  </div>
862
926
  <div class="tags">
863
927
 
928
+ <p class="tag_title">Raises:</p>
929
+ <ul class="raise">
930
+
931
+ <li>
932
+
933
+
934
+ <span class='type'>(<tt>NotImplementedError</tt>)</span>
935
+
936
+
937
+
938
+ </li>
939
+
940
+ </ul>
864
941
 
865
942
  </div><table class="source_code">
866
943
  <tr>
@@ -868,19 +945,15 @@ raised.</p>
868
945
  <pre class="lines">
869
946
 
870
947
 
871
- 69
872
- 70
873
- 71
874
- 72
875
- 73</pre>
948
+ 110
949
+ 111
950
+ 112</pre>
876
951
  </td>
877
952
  <td>
878
- <pre class="code"><span class="info file"># File 'lib/ionian/managed_socket.rb', line 69</span>
953
+ <pre class="code"><span class="info file"># File 'lib/ionian/managed_socket.rb', line 110</span>
879
954
 
880
- <span class='kw'>def</span> <span class='id identifier rubyid_unregister_error_handler'>unregister_error_handler</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span>
881
- <span class='ivar'>@error_handlers</span><span class='period'>.</span><span class='id identifier rubyid_delete_if'>delete_if</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_o'>o</span><span class='op'>|</span> <span class='id identifier rubyid_o'>o</span> <span class='op'>==</span> <span class='id identifier rubyid_block'>block</span> <span class='rbrace'>}</span>
882
- <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_unregister_error_handler'>unregister_error_handler</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span> <span class='kw'>if</span> <span class='ivar'>@socket</span>
883
- <span class='id identifier rubyid_block'>block</span>
955
+ <span class='kw'>def</span> <span class='id identifier rubyid_unregister_status_handler'>unregister_status_handler</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span>
956
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>NotImplementedError</span>
884
957
  <span class='kw'>end</span></pre>
885
958
  </td>
886
959
  </tr>
@@ -888,9 +961,9 @@ raised.</p>
888
961
  </div>
889
962
 
890
963
  <div class="method_details ">
891
- <h3 class="signature " id="unregister_match_handler-instance_method">
964
+ <h3 class="signature " id="write-instance_method">
892
965
 
893
- - (<tt>Object</tt>) <strong>unregister_match_handler</strong>(&amp;block)
966
+ - (<tt>Object</tt>) <strong>write</strong>(data)
894
967
 
895
968
 
896
969
 
@@ -899,7 +972,7 @@ raised.</p>
899
972
  </h3><div class="docstring">
900
973
  <div class="discussion">
901
974
 
902
- <p>Unregister a block from being called when matched data is received.</p>
975
+ <p>Write data to the socket.</p>
903
976
 
904
977
 
905
978
  </div>
@@ -913,19 +986,17 @@ raised.</p>
913
986
  <pre class="lines">
914
987
 
915
988
 
916
- 48
917
- 49
918
- 50
919
- 51
920
- 52</pre>
989
+ 74
990
+ 75
991
+ 76
992
+ 77</pre>
921
993
  </td>
922
994
  <td>
923
- <pre class="code"><span class="info file"># File 'lib/ionian/managed_socket.rb', line 48</span>
995
+ <pre class="code"><span class="info file"># File 'lib/ionian/managed_socket.rb', line 74</span>
924
996
 
925
- <span class='kw'>def</span> <span class='id identifier rubyid_unregister_match_handler'>unregister_match_handler</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span>
926
- <span class='ivar'>@match_handlers</span><span class='period'>.</span><span class='id identifier rubyid_delete_if'>delete_if</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_o'>o</span><span class='op'>|</span> <span class='id identifier rubyid_o'>o</span> <span class='op'>==</span> <span class='id identifier rubyid_block'>block</span> <span class='rbrace'>}</span>
927
- <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_unregister_match_handler'>unregister_match_handler</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span> <span class='kw'>if</span> <span class='ivar'>@socket</span>
928
- <span class='id identifier rubyid_block'>block</span>
997
+ <span class='kw'>def</span> <span class='id identifier rubyid_write'>write</span> <span class='id identifier rubyid_data'>data</span>
998
+ <span class='ivar'>@write_queue</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_data'>data</span>
999
+ <span class='ivar'>@write_pipe_tx</span><span class='period'>.</span><span class='id identifier rubyid_write'>write</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\n</span><span class='tstring_end'>&quot;</span></span>
929
1000
  <span class='kw'>end</span></pre>
930
1001
  </td>
931
1002
  </tr>
@@ -937,7 +1008,7 @@ raised.</p>
937
1008
  </div>
938
1009
 
939
1010
  <div id="footer">
940
- Generated on Wed Jan 28 16:07:21 2015 by
1011
+ Generated on Wed Feb 11 16:57:32 2015 by
941
1012
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
942
1013
  0.8.7.6 (ruby-2.1.5).
943
1014
  </div>