ionian 0.7.0 → 0.8.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.
@@ -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>