ionian 0.6.3 → 0.6.4

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.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +63 -0
  3. data/doc/Ionian/Extension/IO.html +1062 -599
  4. data/doc/Ionian/Extension/Socket.html +2140 -1314
  5. data/doc/Ionian/Extension.html +98 -70
  6. data/doc/Ionian/Server.html +577 -345
  7. data/doc/Ionian/Socket.html +1100 -612
  8. data/doc/Ionian.html +100 -70
  9. data/doc/_index.html +164 -0
  10. data/doc/class_list.html +54 -0
  11. data/doc/css/common.css +1 -0
  12. data/doc/css/full_list.css +57 -0
  13. data/doc/css/style.css +338 -0
  14. data/doc/file.README.html +133 -0
  15. data/doc/file.license.html +73 -0
  16. data/doc/file_list.html +59 -0
  17. data/doc/frames.html +26 -0
  18. data/doc/index.html +111 -71
  19. data/doc/js/app.js +219 -0
  20. data/doc/js/full_list.js +178 -0
  21. data/doc/js/jquery.js +4 -18
  22. data/doc/method_list.html +419 -0
  23. data/doc/top-level-namespace.html +112 -0
  24. data/lib/ionian/extension/io.rb +4 -2
  25. data/lib/ionian/socket.rb +1 -1
  26. data/license.txt +2 -0
  27. metadata +28 -54
  28. data/doc/created.rid +0 -6
  29. data/doc/fonts/Lato-Light.ttf +0 -0
  30. data/doc/fonts/Lato-LightItalic.ttf +0 -0
  31. data/doc/fonts/Lato-Regular.ttf +0 -0
  32. data/doc/fonts/Lato-RegularItalic.ttf +0 -0
  33. data/doc/fonts/SourceCodePro-Bold.ttf +0 -0
  34. data/doc/fonts/SourceCodePro-Regular.ttf +0 -0
  35. data/doc/fonts.css +0 -167
  36. data/doc/images/add.png +0 -0
  37. data/doc/images/arrow_up.png +0 -0
  38. data/doc/images/brick.png +0 -0
  39. data/doc/images/brick_link.png +0 -0
  40. data/doc/images/bug.png +0 -0
  41. data/doc/images/bullet_black.png +0 -0
  42. data/doc/images/bullet_toggle_minus.png +0 -0
  43. data/doc/images/bullet_toggle_plus.png +0 -0
  44. data/doc/images/date.png +0 -0
  45. data/doc/images/delete.png +0 -0
  46. data/doc/images/find.png +0 -0
  47. data/doc/images/loadingAnimation.gif +0 -0
  48. data/doc/images/macFFBgHack.png +0 -0
  49. data/doc/images/package.png +0 -0
  50. data/doc/images/page_green.png +0 -0
  51. data/doc/images/page_white_text.png +0 -0
  52. data/doc/images/page_white_width.png +0 -0
  53. data/doc/images/plugin.png +0 -0
  54. data/doc/images/ruby.png +0 -0
  55. data/doc/images/tag_blue.png +0 -0
  56. data/doc/images/tag_green.png +0 -0
  57. data/doc/images/transparent.png +0 -0
  58. data/doc/images/wrench.png +0 -0
  59. data/doc/images/wrench_orange.png +0 -0
  60. data/doc/images/zoom.png +0 -0
  61. data/doc/js/darkfish.js +0 -140
  62. data/doc/js/navigation.js +0 -142
  63. data/doc/js/search.js +0 -109
  64. data/doc/js/search_index.js +0 -1
  65. data/doc/js/searcher.js +0 -228
  66. data/doc/rdoc.css +0 -580
  67. data/doc/table_of_contents.html +0 -402
@@ -1,223 +1,485 @@
1
- <!DOCTYPE html>
2
-
3
- <html>
4
- <head>
5
- <meta charset="UTF-8">
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>
7
+ Class: Ionian::Socket
8
+
9
+ &mdash; Documentation by YARD 0.8.7.3
10
+
11
+ </title>
6
12
 
7
- <title>class Ionian::Socket - RDoc Documentation</title>
13
+ <link rel="stylesheet" href="../css/style.css" type="text/css" charset="utf-8" />
8
14
 
9
- <link href="../fonts.css" rel="stylesheet">
10
- <link href="../rdoc.css" rel="stylesheet">
15
+ <link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8" />
11
16
 
12
- <script type="text/javascript">
13
- var rdoc_rel_prefix = "../";
17
+ <script type="text/javascript" charset="utf-8">
18
+ hasFrames = window.top.frames.main ? true : false;
19
+ relpath = '../';
20
+ framesUrl = "../frames.html#!" + escape(window.location.href);
14
21
  </script>
15
22
 
16
- <script src="../js/jquery.js"></script>
17
- <script src="../js/navigation.js"></script>
18
- <script src="../js/search_index.js"></script>
19
- <script src="../js/search.js"></script>
20
- <script src="../js/searcher.js"></script>
21
- <script src="../js/darkfish.js"></script>
22
-
23
-
24
- <body id="top" role="document" class="class">
25
- <nav role="navigation">
26
- <div id="project-navigation">
27
- <div id="home-section" role="region" title="Quick navigation" class="nav-section">
28
- <h2>
29
- <a href="../index.html" rel="home">Home</a>
30
- </h2>
31
-
32
- <div id="table-of-contents-navigation">
33
- <a href="../table_of_contents.html#pages">Pages</a>
34
- <a href="../table_of_contents.html#classes">Classes</a>
35
- <a href="../table_of_contents.html#methods">Methods</a>
36
- </div>
23
+
24
+ <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
25
+
26
+ <script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
27
+
28
+
29
+ </head>
30
+ <body>
31
+ <div id="header">
32
+ <div id="menu">
33
+
34
+ <a href="../_index.html">Index (S)</a> &raquo;
35
+ <span class='title'><span class='object_link'><a href="../Ionian.html" title="Ionian (module)">Ionian</a></span></span>
36
+ &raquo;
37
+ <span class="title">Socket</span>
38
+
39
+
40
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
37
41
  </div>
38
42
 
39
- <div id="search-section" role="search" class="project-section initially-hidden">
40
- <form action="#" method="get" accept-charset="utf-8">
41
- <div id="search-field-wrapper">
42
- <input id="search-field" role="combobox" aria-label="Search"
43
- aria-autocomplete="list" aria-controls="search-results"
44
- type="text" name="search" placeholder="Search" spellcheck="false"
45
- title="Type to search, Up and Down to navigate, Enter to load">
43
+ <div id="search">
44
+
45
+ <a class="full_list_link" id="class_list_link"
46
+ href="../class_list.html">
47
+ Class List
48
+ </a>
49
+
50
+ <a class="full_list_link" id="method_list_link"
51
+ href="../method_list.html">
52
+ Method List
53
+ </a>
54
+
55
+ <a class="full_list_link" id="file_list_link"
56
+ href="../file_list.html">
57
+ File List
58
+ </a>
59
+
60
+ </div>
61
+ <div class="clear"></div>
46
62
  </div>
47
63
 
48
- <ul id="search-results" aria-label="Search Results"
49
- aria-busy="false" aria-expanded="false"
50
- aria-atomic="false" class="initially-hidden"></ul>
51
- </form>
52
- </div>
64
+ <iframe id="search_frame"></iframe>
53
65
 
54
- </div>
66
+ <div id="content"><h1>Class: Ionian::Socket
67
+
68
+
69
+
70
+ </h1>
55
71
 
72
+ <dl class="box">
73
+
74
+ <dt class="r1">Inherits:</dt>
75
+ <dd class="r1">
76
+ <span class="inheritName">Object</span>
77
+
78
+ <ul class="fullTree">
79
+ <li>Object</li>
80
+
81
+ <li class="next">Ionian::Socket</li>
82
+
83
+ </ul>
84
+ <a href="#" class="inheritanceTree">show all</a>
85
+
86
+ </dd>
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+ <dt class="r2 last">Defined in:</dt>
97
+ <dd class="r2 last">lib/ionian/socket.rb</dd>
56
98
 
99
+ </dl>
100
+ <div class="clear"></div>
57
101
 
58
- <div id="class-metadata">
102
+ <h2>Overview</h2><div class="docstring">
103
+ <div class="discussion">
59
104
 
60
- <div id="parent-class-section" class="nav-section">
61
- <h3>Parent</h3>
105
+ <p>A convenient wrapper for TCP, UDP, and Unix client sockets.</p>
62
106
 
107
+
108
+ </div>
109
+ </div>
110
+ <div class="tags">
63
111
 
64
- <p class="link">Object
65
-
112
+
66
113
  </div>
67
114
 
115
+
116
+
117
+ <h2>Instance Attribute Summary <small>(<a href="#" class="summary_toggle">collapse</a>)</small></h2>
118
+ <ul class="summary">
119
+
120
+ <li class="public ">
121
+ <span class="summary_signature">
122
+
123
+ <a href="#protocol-instance_method" title="#protocol (instance method)">- (Object) <strong>protocol</strong> </a>
68
124
 
69
- <div id="extends-section" class="nav-section">
70
- <h3>Extended With Modules</h3>
71
125
 
72
- <ul class="link-list">
73
126
 
127
+ (also: #protocol?)
128
+
129
+ </span>
74
130
 
75
- <li><a class="extend" href="Extension/IO.html">Ionian::Extension::IO</a>
76
131
 
77
132
 
133
+
134
+ <span class="note title readonly">readonly</span>
135
+
136
+
78
137
 
79
- <li><a class="extend" href="Extension/Socket.html">Ionian::Extension::Socket</a>
80
138
 
81
139
 
82
140
 
83
- <li><a class="extend" href="Extension/Socket.html">Ionian::Extension::Socket</a>
84
141
 
142
+
143
+
144
+ <span class="summary_desc"><div class='inline'>
145
+ <p>Returns a symbol of the type of protocol this socket uses: :tcp, :udp,
146
+ :unix.</p>
147
+ </div></span>
148
+
149
+ </li>
150
+
151
+
152
+ </ul>
153
+
154
+
155
+
156
+
157
+
158
+ <h2>
159
+ Instance Method Summary
160
+ <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
161
+ </h2>
162
+
163
+ <ul class="summary">
164
+
165
+ <li class="public ">
166
+ <span class="summary_signature">
167
+
168
+ <a href="#closed%3F-instance_method" title="#closed? (instance method)">- (Boolean) <strong>closed?</strong> </a>
169
+
170
+
171
+
172
+ </span>
85
173
 
86
174
 
87
- <li><a class="extend" href="Extension/Socket.html">Ionian::Extension::Socket</a>
88
175
 
89
176
 
90
177
 
91
- <li><a class="extend" href="Extension/Socket.html">Ionian::Extension::Socket</a>
92
178
 
93
179
 
94
- </ul>
95
- </div>
96
180
 
97
- <!-- Method Quickref -->
98
- <div id="method-list-section" class="nav-section">
99
- <h3>Methods</h3>
181
+
182
+ <span class="summary_desc"><div class='inline'>
183
+ <p>Returns true if the socket is closed.</p>
184
+ </div></span>
185
+
186
+ </li>
100
187
 
101
- <ul class="link-list" role="directory">
188
+
189
+ <li class="public ">
190
+ <span class="summary_signature">
102
191
 
103
- <li ><a href="#method-c-new">::new</a>
192
+ <a href="#cmd-instance_method" title="#cmd (instance method)">- (Object) <strong>cmd</strong>(string, **kwargs, &amp;block) </a>
104
193
 
105
- <li ><a href="#method-i-3C-3C">#&lt;&lt;</a>
194
+
106
195
 
107
- <li ><a href="#method-i-closed-3F">#closed?</a>
196
+ </span>
197
+
198
+
199
+
200
+
201
+
202
+
203
+
204
+
205
+
206
+ <span class="summary_desc"><div class='inline'>
207
+ <p>Send a command (data) to the socket.</p>
208
+ </div></span>
209
+
210
+ </li>
211
+
212
+
213
+ <li class="public ">
214
+ <span class="summary_signature">
108
215
 
109
- <li ><a href="#method-i-cmd">#cmd</a>
216
+ <a href="#expression-instance_method" title="#expression (instance method)">- (Object) <strong>expression</strong> </a>
110
217
 
111
- <li ><a href="#method-i-expression">#expression</a>
218
+
112
219
 
113
- <li ><a href="#method-i-expression-3D">#expression=</a>
220
+ </span>
221
+
222
+
223
+
224
+
225
+
226
+
227
+
228
+
229
+
230
+ <span class="summary_desc"><div class='inline'>
231
+ <p>Returns the regular expression used to match incoming data.</p>
232
+ </div></span>
233
+
234
+ </li>
235
+
236
+
237
+ <li class="public ">
238
+ <span class="summary_signature">
114
239
 
115
- <li ><a href="#method-i-flush">#flush</a>
240
+ <a href="#expression%3D-instance_method" title="#expression= (instance method)">- (Object) <strong>expression=</strong>(exp) </a>
116
241
 
117
- <li ><a href="#method-i-has_data-3F">#has_data?</a>
242
+
118
243
 
119
- <li ><a href="#method-i-on_match">#on_match</a>
244
+ </span>
245
+
246
+
247
+
248
+
249
+
250
+
251
+
252
+
253
+
254
+ <span class="summary_desc"><div class='inline'>
255
+ <p>Set the regular expression used to match incoming data.</p>
256
+ </div></span>
257
+
258
+ </li>
259
+
260
+
261
+ <li class="public ">
262
+ <span class="summary_signature">
120
263
 
121
- <li ><a href="#method-i-persistent-3F">#persistent?</a>
264
+ <a href="#flush-instance_method" title="#flush (instance method)">- (Object) <strong>flush</strong> </a>
122
265
 
123
- <li ><a href="#method-i-puts">#puts</a>
266
+
124
267
 
125
- <li ><a href="#method-i-register_observer">#register_observer</a>
268
+ </span>
269
+
270
+
271
+
272
+
273
+
274
+
275
+
276
+
277
+
278
+ <span class="summary_desc"><div class='inline'>
279
+ <p>Flushes buffered data to the operating system.</p>
280
+ </div></span>
281
+
282
+ </li>
283
+
284
+
285
+ <li class="public ">
286
+ <span class="summary_signature">
126
287
 
127
- <li ><a href="#method-i-unregister_observer">#unregister_observer</a>
288
+ <a href="#has_data%3F-instance_method" title="#has_data? (instance method)">- (Boolean) <strong>has_data?</strong>(**kwargs) </a>
128
289
 
129
- <li ><a href="#method-i-write">#write</a>
290
+
130
291
 
131
- </ul>
132
- </div>
292
+ </span>
293
+
294
+
295
+
296
+
297
+
298
+
299
+
133
300
 
134
- </div>
135
- </nav>
301
+
302
+ <span class="summary_desc"><div class='inline'>
303
+ <p>Returns true if there is data in the receive buffer.</p>
304
+ </div></span>
305
+
306
+ </li>
136
307
 
137
- <main role="main" aria-labelledby="class-Ionian::Socket">
138
- <h1 id="class-Ionian::Socket" class="class">
139
- class Ionian::Socket
140
- </h1>
308
+
309
+ <li class="public ">
310
+ <span class="summary_signature">
311
+
312
+ <a href="#initialize-instance_method" title="#initialize (instance method)">- (Socket) <strong>initialize</strong>(existing_socket = nil, **kwargs) </a>
313
+
141
314
 
142
- <section class="description">
143
315
 
144
- <p>A convenient wrapper for TCP, UDP, and Unix client sockets.</p>
316
+ </span>
317
+
318
+
319
+ <span class="note title constructor">constructor</span>
320
+
321
+
322
+
323
+
324
+
325
+
326
+
327
+
328
+ <span class="summary_desc"><div class='inline'>
329
+ <p>Creates a new socket or wraps an existing socket.</p>
330
+ </div></span>
331
+
332
+ </li>
145
333
 
146
- </section>
334
+
335
+ <li class="public ">
336
+ <span class="summary_signature">
337
+
338
+ <a href="#persistent%3F-instance_method" title="#persistent? (instance method)">- (Boolean) <strong>persistent?</strong> </a>
339
+
147
340
 
341
+
342
+ </span>
343
+
344
+
345
+
148
346
 
149
347
 
150
348
 
151
- <section id="5Buntitled-5D" class="documentation-section">
349
+
350
+
351
+
352
+ <span class="summary_desc"><div class='inline'>
353
+ <p>Returns true if the socket remains open after writing data.</p>
354
+ </div></span>
355
+
356
+ </li>
357
+
358
+
359
+ <li class="public ">
360
+ <span class="summary_signature">
361
+
362
+ <a href="#puts-instance_method" title="#puts (instance method)">- (Object) <strong>puts</strong>(*string) </a>
152
363
 
153
364
 
154
365
 
366
+ </span>
367
+
368
+
369
+
370
+
371
+
372
+
373
+
374
+
375
+
376
+ <span class="summary_desc"><div class='inline'>
377
+ <p>Writes the given string(s) to the socket and appends a newline character to
378
+ any string not already ending with one.</p>
379
+ </div></span>
380
+
381
+ </li>
155
382
 
383
+
384
+ <li class="public ">
385
+ <span class="summary_signature">
386
+
387
+ <a href="#register_observer-instance_method" title="#register_observer (instance method)">- (Object) <strong>register_observer</strong>(&amp;block) </a>
156
388
 
157
389
 
158
390
 
159
- <section class="attribute-method-details" class="method-section">
160
- <header>
161
- <h3>Attributes</h3>
162
- </header>
391
+ (also: #on_match)
392
+
393
+ </span>
394
+
395
+
396
+
397
+
398
+
399
+
400
+
401
+
402
+
403
+ <span class="summary_desc"><div class='inline'>
404
+ <p>Register a block to be called when #run_match receives matched data.</p>
405
+ </div></span>
406
+
407
+ </li>
163
408
 
164
409
 
165
- <div id="attribute-i-protocol" class="method-detail">
166
- <div class="method-heading attribute-method-heading">
167
- <span class="method-name">protocol</span><span
168
- class="attribute-access-type">[R]</span>
169
- </div>
170
-
171
- <div class="method-description">
172
-
173
- <p>Returns a symbol of the type of protocol this socket uses: :tcp, :udp,
174
- :unix</p>
175
-
176
- </div>
177
- </div>
178
-
179
- <div id="attribute-i-protocol-3F" class="method-detail">
180
- <div class="method-heading attribute-method-heading">
181
- <span class="method-name">protocol?</span><span
182
- class="attribute-access-type">[R]</span>
183
- </div>
184
-
185
- <div class="method-description">
186
-
187
- <p>Returns a symbol of the type of protocol this socket uses: :tcp, :udp,
188
- :unix</p>
189
-
190
- </div>
191
- </div>
192
-
193
- </section>
410
+ <li class="public ">
411
+ <span class="summary_signature">
412
+
413
+ <a href="#unregister_observer-instance_method" title="#unregister_observer (instance method)">- (Object) <strong>unregister_observer</strong>(&amp;block) </a>
194
414
 
195
415
 
196
416
 
197
- <section id="public-class-5Buntitled-5D-method-details" class="method-section">
198
- <header>
199
- <h3>Public Class Methods</h3>
200
- </header>
417
+ </span>
418
+
419
+
420
+
421
+
422
+
423
+
424
+
201
425
 
426
+
427
+ <span class="summary_desc"><div class='inline'>
428
+ <p>Unregister a block from being called when matched data is received.</p>
429
+ </div></span>
430
+
431
+ </li>
432
+
433
+
434
+ <li class="public ">
435
+ <span class="summary_signature">
436
+
437
+ <a href="#write-instance_method" title="#write (instance method)">- (Object) <strong>write</strong>(string) </a>
202
438
 
203
- <div id="method-c-new" class="method-detail ">
204
-
205
- <div class="method-heading">
206
- <span class="method-name">new</span><span
207
- class="method-args">(existing_socket = nil, **kwargs)</span>
208
-
209
- <span class="method-click-advice">click to toggle source</span>
210
-
211
- </div>
212
-
213
439
 
214
- <div class="method-description">
215
-
216
- <p>Creates a new socket or wraps an existing socket.</p>
440
+
441
+ (also: #&lt;&lt;)
442
+
443
+ </span>
444
+
445
+
446
+
447
+
448
+
449
+
450
+
451
+
452
+
453
+ <span class="summary_desc"><div class='inline'>
454
+ <p>Writes the given string to the socket.</p>
455
+ </div></span>
456
+
457
+ </li>
458
+
459
+
460
+ </ul>
461
+
462
+
463
+ <div id="constructor_details" class="method_details_list">
464
+ <h2>Constructor Details</h2>
465
+
466
+ <div class="method_details first">
467
+ <h3 class="signature first" id="initialize-instance_method">
468
+
469
+ - (<tt><span class='object_link'><a href="" title="Ionian::Socket (class)">Socket</a></span></tt>) <strong>initialize</strong>(existing_socket = nil, **kwargs)
470
+
471
+
472
+
473
+
474
+
475
+ </h3><div class="docstring">
476
+ <div class="discussion">
477
+
478
+ <p>Creates a new socket or wraps an existing socket.</p>
217
479
 
218
480
  <p>Args:</p>
219
481
 
220
- <pre>host: IP or hostname to connect to.
482
+ <pre class="code ruby"><code class="ruby">host: IP or hostname to connect to.
221
483
  port: Connection&#39;s port number. Default is 23. Unused by :unix protocol.
222
484
  protocol: Type of socket to create. :tcp, :udp, :unix. Default is :tcp.
223
485
  :udp will be automatically selected for addresses in the multicast range.
@@ -230,574 +492,800 @@ reuse_addr: Set true to enable the SO_REUSEADDR flag. Allows local address reuse
230
492
  no_delay: Set true to enable the TCP_NODELAY flag. Disables Nagle algorithm.
231
493
  cork: Set true to enable the TCP_CORK flag. Buffers multiple writes
232
494
  into one segment.
233
- expression: Overrides the #read_match regular expression for received data.</pre>
234
-
235
-
495
+ expression: Overrides the #read_match regular expression for received data.</code></pre>
236
496
 
237
-
238
- <div class="method-source-code" id="new-source">
239
- <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 25</span>
240
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">existing_socket</span> = <span class="ruby-keyword">nil</span>, <span class="ruby-operator">**</span><span class="ruby-identifier">kwargs</span>)
241
- <span class="ruby-ivar">@socket</span> = <span class="ruby-identifier">existing_socket</span>
497
+
498
+ </div>
499
+ </div>
500
+ <div class="tags">
242
501
 
243
- <span class="ruby-ivar">@ionian_listeners</span> = []
502
+
503
+ </div><table class="source_code">
504
+ <tr>
505
+ <td>
506
+ <pre class="lines">
507
+
508
+
509
+ 25
510
+ 26
511
+ 27
512
+ 28
513
+ 29
514
+ 30
515
+ 31
516
+ 32
517
+ 33
518
+ 34
519
+ 35
520
+ 36
521
+ 37
522
+ 38
523
+ 39
524
+ 40
525
+ 41
526
+ 42
527
+ 43
528
+ 44
529
+ 45
530
+ 46
531
+ 47
532
+ 48
533
+ 49
534
+ 50
535
+ 51
536
+ 52
537
+ 53
538
+ 54
539
+ 55
540
+ 56
541
+ 57
542
+ 58
543
+ 59
544
+ 60
545
+ 61
546
+ 62
547
+ 63
548
+ 64
549
+ 65
550
+ 66
551
+ 67
552
+ 68
553
+ 69
554
+ 70
555
+ 71
556
+ 72
557
+ 73
558
+ 74
559
+ 75
560
+ 76
561
+ 77
562
+ 78
563
+ 79
564
+ 80
565
+ 81
566
+ 82
567
+ 83
568
+ 84</pre>
569
+ </td>
570
+ <td>
571
+ <pre class="code"><span class="info file"># File 'lib/ionian/socket.rb', line 25</span>
572
+
573
+ <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span><span class='lparen'>(</span><span class='id identifier rubyid_existing_socket'>existing_socket</span> <span class='op'>=</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_kwargs'>kwargs</span><span class='rparen'>)</span>
574
+ <span class='ivar'>@socket</span> <span class='op'>=</span> <span class='id identifier rubyid_existing_socket'>existing_socket</span>
244
575
 
245
- <span class="ruby-ivar">@expression</span> = <span class="ruby-identifier">kwargs</span>.<span class="ruby-identifier">fetch</span> <span class="ruby-value">:expression</span>, <span class="ruby-keyword">nil</span>
576
+ <span class='ivar'>@ionian_listeners</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
246
577
 
247
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">existing_socket</span>
248
- <span class="ruby-comment"># Convert existing socket.</span>
249
- <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">extend</span> <span class="ruby-constant">Ionian</span><span class="ruby-operator">::</span><span class="ruby-constant">Extension</span><span class="ruby-operator">::</span><span class="ruby-constant">IO</span>
250
- <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">extend</span> <span class="ruby-constant">Ionian</span><span class="ruby-operator">::</span><span class="ruby-constant">Extension</span><span class="ruby-operator">::</span><span class="ruby-constant">Socket</span>
251
-
252
- <span class="ruby-keyword">if</span> <span class="ruby-identifier">existing_socket</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">UNIXSocket</span>
253
- <span class="ruby-ivar">@host</span> = <span class="ruby-identifier">existing_socket</span>.<span class="ruby-identifier">path</span>
254
- <span class="ruby-ivar">@port</span> = <span class="ruby-keyword">nil</span>
255
- <span class="ruby-keyword">else</span>
256
- <span class="ruby-ivar">@host</span> = <span class="ruby-identifier">existing_socket</span>.<span class="ruby-identifier">remote_address</span>.<span class="ruby-identifier">ip_address</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">existing_socket</span>
257
- <span class="ruby-ivar">@port</span> = <span class="ruby-identifier">existing_socket</span>.<span class="ruby-identifier">remote_address</span>.<span class="ruby-identifier">ip_port</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">existing_socket</span>
258
- <span class="ruby-keyword">end</span>
578
+ <span class='ivar'>@expression</span> <span class='op'>=</span> <span class='id identifier rubyid_kwargs'>kwargs</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span> <span class='symbol'>:expression</span><span class='comma'>,</span> <span class='kw'>nil</span>
259
579
 
260
- <span class="ruby-keyword">if</span> <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">TCPSocket</span>
261
- <span class="ruby-ivar">@protocol</span> = <span class="ruby-value">:tcp</span>
262
- <span class="ruby-keyword">elsif</span> <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">UDPSocket</span>
263
- <span class="ruby-ivar">@protocol</span> = <span class="ruby-value">:udp</span>
264
- <span class="ruby-keyword">elsif</span> <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">is_a?</span> <span class="ruby-constant">UNIXSocket</span>
265
- <span class="ruby-ivar">@protocol</span> = <span class="ruby-value">:unix</span>
266
- <span class="ruby-keyword">end</span>
267
-
268
- <span class="ruby-ivar">@persistent</span> = <span class="ruby-keyword">true</span> <span class="ruby-comment"># Existing sockets are always persistent.</span>
269
-
270
- <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">expression</span> = <span class="ruby-ivar">@expression</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@expression</span>
580
+ <span class='kw'>if</span> <span class='id identifier rubyid_existing_socket'>existing_socket</span>
581
+ <span class='comment'># Convert existing socket.
582
+ </span> <span class='ivar'>@socket</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>
583
+ <span class='ivar'>@socket</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'>Socket</span>
271
584
 
272
- <span class="ruby-identifier">initialize_socket_methods</span>
273
- <span class="ruby-keyword">else</span>
274
- <span class="ruby-comment"># Initialize new socket.</span>
585
+ <span class='kw'>if</span> <span class='id identifier rubyid_existing_socket'>existing_socket</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span> <span class='const'>UNIXSocket</span>
586
+ <span class='ivar'>@host</span> <span class='op'>=</span> <span class='id identifier rubyid_existing_socket'>existing_socket</span><span class='period'>.</span><span class='id identifier rubyid_path'>path</span>
587
+ <span class='ivar'>@port</span> <span class='op'>=</span> <span class='kw'>nil</span>
588
+ <span class='kw'>else</span>
589
+ <span class='ivar'>@host</span> <span class='op'>=</span> <span class='id identifier rubyid_existing_socket'>existing_socket</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> <span class='kw'>if</span> <span class='id identifier rubyid_existing_socket'>existing_socket</span>
590
+ <span class='ivar'>@port</span> <span class='op'>=</span> <span class='id identifier rubyid_existing_socket'>existing_socket</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_port'>ip_port</span> <span class='kw'>if</span> <span class='id identifier rubyid_existing_socket'>existing_socket</span>
591
+ <span class='kw'>end</span>
592
+
593
+ <span class='kw'>if</span> <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span> <span class='const'>TCPSocket</span>
594
+ <span class='ivar'>@protocol</span> <span class='op'>=</span> <span class='symbol'>:tcp</span>
595
+ <span class='kw'>elsif</span> <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span> <span class='const'>UDPSocket</span>
596
+ <span class='ivar'>@protocol</span> <span class='op'>=</span> <span class='symbol'>:udp</span>
597
+ <span class='kw'>elsif</span> <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span> <span class='const'>UNIXSocket</span>
598
+ <span class='ivar'>@protocol</span> <span class='op'>=</span> <span class='symbol'>:unix</span>
599
+ <span class='kw'>end</span>
275
600
 
276
- <span class="ruby-comment"># TODO: Should be able to parse the port out of host.</span>
277
- <span class="ruby-comment"># :port should override this parsed value.</span>
601
+ <span class='ivar'>@persistent</span> <span class='op'>=</span> <span class='kw'>true</span> <span class='comment'># Existing sockets are always persistent.
602
+ </span>
603
+ <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_expression'>expression</span> <span class='op'>=</span> <span class='ivar'>@expression</span> <span class='kw'>if</span> <span class='ivar'>@expression</span>
278
604
 
279
- <span class="ruby-ivar">@host</span> = <span class="ruby-identifier">kwargs</span>.<span class="ruby-identifier">fetch</span> <span class="ruby-value">:host</span>
280
- <span class="ruby-ivar">@port</span> = <span class="ruby-identifier">kwargs</span>.<span class="ruby-identifier">fetch</span> <span class="ruby-value">:port</span>, <span class="ruby-value">23</span>
281
- <span class="ruby-ivar">@bind_port</span> = <span class="ruby-identifier">kwargs</span>.<span class="ruby-identifier">fetch</span> <span class="ruby-value">:bind_port</span>, <span class="ruby-ivar">@port</span>
605
+ <span class='id identifier rubyid_initialize_socket_methods'>initialize_socket_methods</span>
606
+ <span class='kw'>else</span>
607
+ <span class='comment'># Initialize new socket.
608
+ </span>
609
+ <span class='comment'># TODO: Should be able to parse the port out of host.
610
+ </span> <span class='comment'># :port should override this parsed value.
611
+ </span>
612
+ <span class='ivar'>@host</span> <span class='op'>=</span> <span class='id identifier rubyid_kwargs'>kwargs</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span> <span class='symbol'>:host</span>
613
+ <span class='ivar'>@port</span> <span class='op'>=</span> <span class='id identifier rubyid_kwargs'>kwargs</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span> <span class='symbol'>:port</span><span class='comma'>,</span> <span class='int'>23</span>
614
+ <span class='ivar'>@bind_port</span> <span class='op'>=</span> <span class='id identifier rubyid_kwargs'>kwargs</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span> <span class='symbol'>:bind_port</span><span class='comma'>,</span> <span class='ivar'>@port</span>
282
615
 
283
- <span class="ruby-comment"># Automatically select UDP for the multicast range. Otherwise default to TCP.</span>
284
- <span class="ruby-identifier">default_protocol</span> = <span class="ruby-value">:tcp</span>
285
- <span class="ruby-identifier">default_protocol</span> = <span class="ruby-value">:udp</span> <span class="ruby-keyword">if</span> <span class="ruby-constant">Ionian</span><span class="ruby-operator">::</span><span class="ruby-constant">Extension</span><span class="ruby-operator">::</span><span class="ruby-constant">Socket</span>.<span class="ruby-identifier">multicast?</span> <span class="ruby-ivar">@host</span>
286
- <span class="ruby-identifier">default_protocol</span> = <span class="ruby-value">:unix</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@host</span>.<span class="ruby-identifier">start_with?</span> <span class="ruby-string">&#39;/&#39;</span>
616
+ <span class='comment'># Automatically select UDP for the multicast range. Otherwise default to TCP.
617
+ </span> <span class='id identifier rubyid_default_protocol'>default_protocol</span> <span class='op'>=</span> <span class='symbol'>:tcp</span>
618
+ <span class='id identifier rubyid_default_protocol'>default_protocol</span> <span class='op'>=</span> <span class='symbol'>:udp</span> <span class='kw'>if</span> <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='ivar'>@host</span>
619
+ <span class='id identifier rubyid_default_protocol'>default_protocol</span> <span class='op'>=</span> <span class='symbol'>:unix</span> <span class='kw'>if</span> <span class='ivar'>@host</span><span class='period'>.</span><span class='id identifier rubyid_start_with?'>start_with?</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>/</span><span class='tstring_end'>&#39;</span></span>
287
620
 
288
- <span class="ruby-ivar">@protocol</span> = <span class="ruby-identifier">kwargs</span>.<span class="ruby-identifier">fetch</span> <span class="ruby-value">:protocol</span>, <span class="ruby-identifier">default_protocol</span>
289
- <span class="ruby-ivar">@persistent</span> = <span class="ruby-identifier">kwargs</span>.<span class="ruby-identifier">fetch</span> <span class="ruby-value">:persistent</span>, <span class="ruby-keyword">true</span>
290
- <span class="ruby-ivar">@persistent</span> = <span class="ruby-keyword">true</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@protocol</span> <span class="ruby-operator">==</span> <span class="ruby-value">:udp</span>
621
+ <span class='ivar'>@protocol</span> <span class='op'>=</span> <span class='id identifier rubyid_kwargs'>kwargs</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span> <span class='symbol'>:protocol</span><span class='comma'>,</span> <span class='id identifier rubyid_default_protocol'>default_protocol</span>
622
+ <span class='ivar'>@persistent</span> <span class='op'>=</span> <span class='id identifier rubyid_kwargs'>kwargs</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span> <span class='symbol'>:persistent</span><span class='comma'>,</span> <span class='kw'>true</span>
623
+ <span class='ivar'>@persistent</span> <span class='op'>=</span> <span class='kw'>true</span> <span class='kw'>if</span> <span class='ivar'>@protocol</span> <span class='op'>==</span> <span class='symbol'>:udp</span>
291
624
 
292
- <span class="ruby-ivar">@reuse_addr</span> = <span class="ruby-identifier">kwargs</span>.<span class="ruby-identifier">fetch</span> <span class="ruby-value">:reuse_addr</span>, <span class="ruby-keyword">false</span>
293
- <span class="ruby-ivar">@no_delay</span> = <span class="ruby-identifier">kwargs</span>.<span class="ruby-identifier">fetch</span> <span class="ruby-value">:no_delay</span>, <span class="ruby-keyword">false</span>
294
- <span class="ruby-ivar">@cork</span> = <span class="ruby-identifier">kwargs</span>.<span class="ruby-identifier">fetch</span> <span class="ruby-value">:cork</span>, <span class="ruby-keyword">false</span>
625
+ <span class='ivar'>@reuse_addr</span> <span class='op'>=</span> <span class='id identifier rubyid_kwargs'>kwargs</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span> <span class='symbol'>:reuse_addr</span><span class='comma'>,</span> <span class='kw'>false</span>
626
+ <span class='ivar'>@no_delay</span> <span class='op'>=</span> <span class='id identifier rubyid_kwargs'>kwargs</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span> <span class='symbol'>:no_delay</span><span class='comma'>,</span> <span class='kw'>false</span>
627
+ <span class='ivar'>@cork</span> <span class='op'>=</span> <span class='id identifier rubyid_kwargs'>kwargs</span><span class='period'>.</span><span class='id identifier rubyid_fetch'>fetch</span> <span class='symbol'>:cork</span><span class='comma'>,</span> <span class='kw'>false</span>
295
628
 
296
629
 
297
- <span class="ruby-identifier">create_socket</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@persistent</span>
298
- <span class="ruby-keyword">end</span>
299
- <span class="ruby-keyword">end</span></pre>
300
- </div>
301
-
302
- </div>
303
-
304
-
305
-
306
-
307
- </div>
308
-
309
-
310
- </section>
630
+ <span class='id identifier rubyid_create_socket'>create_socket</span> <span class='kw'>if</span> <span class='ivar'>@persistent</span>
631
+ <span class='kw'>end</span>
632
+ <span class='kw'>end</span></pre>
633
+ </td>
634
+ </tr>
635
+ </table>
636
+ </div>
311
637
 
312
- <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
313
- <header>
314
- <h3>Public Instance Methods</h3>
315
- </header>
638
+ </div>
316
639
 
640
+ <div id="instance_attr_details" class="attr_details">
641
+ <h2>Instance Attribute Details</h2>
317
642
 
318
- <div id="method-i-3C-3C" class="method-detail method-alias">
319
-
320
- <div class="method-heading">
321
- <span class="method-name">&lt;&lt;</span><span
322
- class="method-args">(string)</span>
323
-
324
- </div>
325
-
643
+
644
+ <span id=""></span>
645
+ <div class="method_details first">
646
+ <h3 class="signature first" id="protocol-instance_method">
647
+
648
+ - (<tt>Object</tt>) <strong>protocol</strong> <span class="extras">(readonly)</span>
649
+
326
650
 
327
- <div class="method-description">
328
-
329
-
330
-
331
-
651
+
652
+ <span class="aliases">Also known as:
653
+ <span class="names"><span id='protocol?-instance_method'>protocol?</span></span>
654
+ </span>
655
+
332
656
 
333
-
334
- </div>
657
+
658
+ </h3><div class="docstring">
659
+ <div class="discussion">
660
+
661
+ <p>Returns a symbol of the type of protocol this socket uses: :tcp, :udp,
662
+ :unix</p>
335
663
 
336
-
337
664
 
338
-
339
- <div class="aliases">
340
- Alias for: <a href="Socket.html#method-i-write">write</a>
341
- </div>
342
-
343
- </div>
665
+ </div>
666
+ </div>
667
+ <div class="tags">
668
+
344
669
 
670
+ </div><table class="source_code">
671
+ <tr>
672
+ <td>
673
+ <pre class="lines">
674
+
675
+
676
+ 88
677
+ 89
678
+ 90</pre>
679
+ </td>
680
+ <td>
681
+ <pre class="code"><span class="info file"># File 'lib/ionian/socket.rb', line 88</span>
682
+
683
+ <span class='kw'>def</span> <span class='id identifier rubyid_protocol'>protocol</span>
684
+ <span class='ivar'>@protocol</span>
685
+ <span class='kw'>end</span></pre>
686
+ </td>
687
+ </tr>
688
+ </table>
689
+ </div>
345
690
 
346
- <div id="method-i-closed-3F" class="method-detail ">
347
-
348
- <div class="method-heading">
349
- <span class="method-name">closed?</span><span
350
- class="method-args">()</span>
351
-
352
- <span class="method-click-advice">click to toggle source</span>
353
-
354
- </div>
355
-
691
+ </div>
356
692
 
357
- <div class="method-description">
358
-
359
- <p>Returns true if the socket is closed.</p>
360
-
361
-
362
693
 
363
-
364
- <div class="method-source-code" id="closed-3F-source">
365
- <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 159</span>
366
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">closed?</span>
367
- <span class="ruby-keyword">return</span> <span class="ruby-keyword">true</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@socket</span>
368
- <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">closed?</span>
369
- <span class="ruby-keyword">end</span></pre>
370
- </div>
371
-
372
- </div>
694
+ <div id="instance_method_details" class="method_details_list">
695
+ <h2>Instance Method Details</h2>
373
696
 
374
-
697
+
698
+ <div class="method_details first">
699
+ <h3 class="signature first" id="closed?-instance_method">
700
+
701
+ - (<tt>Boolean</tt>) <strong>closed?</strong>
702
+
375
703
 
376
-
377
- </div>
704
+
378
705
 
706
+
707
+ </h3><div class="docstring">
708
+ <div class="discussion">
379
709
 
380
- <div id="method-i-cmd" class="method-detail ">
381
-
382
- <div class="method-heading">
383
- <span class="method-name">cmd</span><span
384
- class="method-args">(string, **kwargs) { |match| ... }</span>
385
-
386
- <span class="method-click-advice">click to toggle source</span>
387
-
388
- </div>
389
-
710
+ <p>Returns true if the socket is closed.</p>
390
711
 
391
- <div class="method-description">
392
-
393
- <p>Send a command (data) to the socket. Returns an array of received matches.
394
- Block yields received match. See <a
395
- href="Extension/IO.html#method-i-read_match">Ionian::Extension::IO#read_match</a>.</p>
396
-
397
-
398
712
 
399
-
400
- <div class="method-source-code" id="cmd-source">
401
- <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 111</span>
402
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">cmd</span>(<span class="ruby-identifier">string</span>, <span class="ruby-operator">**</span><span class="ruby-identifier">kwargs</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
403
- <span class="ruby-identifier">create_socket</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@persistent</span>
713
+ </div>
714
+ </div>
715
+ <div class="tags">
404
716
 
405
- <span class="ruby-keyword">if</span> <span class="ruby-ivar">@protocol</span> <span class="ruby-operator">==</span> <span class="ruby-value">:udp</span>
406
- <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">send</span> <span class="ruby-identifier">string</span>, <span class="ruby-value">0</span>
407
- <span class="ruby-keyword">else</span>
408
- <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">string</span>
409
- <span class="ruby-keyword">end</span>
717
+ <p class="tag_title">Returns:</p>
718
+ <ul class="return">
410
719
 
411
- <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">flush</span>
720
+ <li>
721
+
722
+
723
+ <span class='type'>(<tt>Boolean</tt>)</span>
724
+
725
+
726
+
727
+ </li>
728
+
729
+ </ul>
730
+
731
+ </div><table class="source_code">
732
+ <tr>
733
+ <td>
734
+ <pre class="lines">
735
+
736
+
737
+ 159
738
+ 160
739
+ 161
740
+ 162</pre>
741
+ </td>
742
+ <td>
743
+ <pre class="code"><span class="info file"># File 'lib/ionian/socket.rb', line 159</span>
744
+
745
+ <span class='kw'>def</span> <span class='id identifier rubyid_closed?'>closed?</span>
746
+ <span class='kw'>return</span> <span class='kw'>true</span> <span class='kw'>unless</span> <span class='ivar'>@socket</span>
747
+ <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_closed?'>closed?</span>
748
+ <span class='kw'>end</span></pre>
749
+ </td>
750
+ </tr>
751
+ </table>
752
+ </div>
753
+
754
+ <div class="method_details ">
755
+ <h3 class="signature " id="cmd-instance_method">
412
756
 
413
- <span class="ruby-identifier">matches</span> = <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">read_match</span>(<span class="ruby-identifier">kwargs</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">match</span><span class="ruby-operator">|</span> <span class="ruby-keyword">yield</span> <span class="ruby-identifier">match</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span>}
414
- <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">close</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@persistent</span>
757
+ - (<tt>Object</tt>) <strong>cmd</strong>(string, **kwargs, &amp;block)
415
758
 
416
- <span class="ruby-identifier">matches</span>
417
- <span class="ruby-keyword">end</span></pre>
418
- </div>
419
-
420
- </div>
421
759
 
422
-
423
-
424
-
425
- </div>
760
+
426
761
 
762
+
763
+ </h3><div class="docstring">
764
+ <div class="discussion">
427
765
 
428
- <div id="method-i-expression" class="method-detail ">
429
-
430
- <div class="method-heading">
431
- <span class="method-name">expression</span><span
432
- class="method-args">()</span>
433
-
434
- <span class="method-click-advice">click to toggle source</span>
435
-
436
- </div>
437
-
766
+ <p>Send a command (data) to the socket. Returns an array of received matches.
767
+ Block yields received match. See Ionian::Extension::IO#read_match.</p>
438
768
 
439
- <div class="method-description">
440
-
441
- <p>Returns the regular expression used to match incoming data.</p>
442
-
443
-
444
769
 
445
-
446
- <div class="method-source-code" id="expression-source">
447
- <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 92</span>
448
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">expression</span>
449
- <span class="ruby-ivar">@expression</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">expression</span>
450
- <span class="ruby-keyword">end</span></pre>
451
- </div>
452
-
453
- </div>
770
+ </div>
771
+ </div>
772
+ <div class="tags">
773
+
454
774
 
455
-
775
+ </div><table class="source_code">
776
+ <tr>
777
+ <td>
778
+ <pre class="lines">
779
+
780
+
781
+ 111
782
+ 112
783
+ 113
784
+ 114
785
+ 115
786
+ 116
787
+ 117
788
+ 118
789
+ 119
790
+ 120
791
+ 121
792
+ 122
793
+ 123
794
+ 124
795
+ 125
796
+ 126</pre>
797
+ </td>
798
+ <td>
799
+ <pre class="code"><span class="info file"># File 'lib/ionian/socket.rb', line 111</span>
800
+
801
+ <span class='kw'>def</span> <span class='id identifier rubyid_cmd'>cmd</span><span class='lparen'>(</span><span class='id identifier rubyid_string'>string</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_kwargs'>kwargs</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
802
+ <span class='id identifier rubyid_create_socket'>create_socket</span> <span class='kw'>unless</span> <span class='ivar'>@persistent</span>
803
+
804
+ <span class='kw'>if</span> <span class='ivar'>@protocol</span> <span class='op'>==</span> <span class='symbol'>:udp</span>
805
+ <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span> <span class='id identifier rubyid_string'>string</span><span class='comma'>,</span> <span class='int'>0</span>
806
+ <span class='kw'>else</span>
807
+ <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_write'>write</span> <span class='id identifier rubyid_string'>string</span>
808
+ <span class='kw'>end</span>
809
+
810
+ <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_flush'>flush</span>
811
+
812
+ <span class='id identifier rubyid_matches'>matches</span> <span class='op'>=</span> <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_read_match'>read_match</span><span class='lparen'>(</span><span class='id identifier rubyid_kwargs'>kwargs</span><span class='rparen'>)</span> <span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_match'>match</span><span class='op'>|</span> <span class='kw'>yield</span> <span class='id identifier rubyid_match'>match</span> <span class='kw'>if</span> <span class='id identifier rubyid_block_given?'>block_given?</span><span class='rbrace'>}</span>
813
+ <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'>@persistent</span>
814
+
815
+ <span class='id identifier rubyid_matches'>matches</span>
816
+ <span class='kw'>end</span></pre>
817
+ </td>
818
+ </tr>
819
+ </table>
820
+ </div>
821
+
822
+ <div class="method_details ">
823
+ <h3 class="signature " id="expression-instance_method">
824
+
825
+ - (<tt>Object</tt>) <strong>expression</strong>
826
+
456
827
 
457
-
458
- </div>
828
+
459
829
 
830
+
831
+ </h3><div class="docstring">
832
+ <div class="discussion">
460
833
 
461
- <div id="method-i-expression-3D" class="method-detail ">
462
-
463
- <div class="method-heading">
464
- <span class="method-name">expression=</span><span
465
- class="method-args">(exp)</span>
466
-
467
- <span class="method-click-advice">click to toggle source</span>
468
-
469
- </div>
470
-
834
+ <p>Returns the regular expression used to match incoming data.</p>
471
835
 
472
- <div class="method-description">
473
-
474
- <p>Set the regular expression used to match incoming data.</p>
475
-
476
-
477
836
 
478
-
479
- <div class="method-source-code" id="expression-3D-source">
480
- <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 97</span>
481
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">expression=</span>(<span class="ruby-identifier">exp</span>)
482
- <span class="ruby-ivar">@expression</span> = <span class="ruby-identifier">exp</span>
483
- <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">expression</span> = <span class="ruby-identifier">exp</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@socket</span>
484
- <span class="ruby-keyword">end</span></pre>
485
- </div>
486
-
487
- </div>
837
+ </div>
838
+ </div>
839
+ <div class="tags">
840
+
488
841
 
489
-
842
+ </div><table class="source_code">
843
+ <tr>
844
+ <td>
845
+ <pre class="lines">
846
+
847
+
848
+ 92
849
+ 93
850
+ 94</pre>
851
+ </td>
852
+ <td>
853
+ <pre class="code"><span class="info file"># File 'lib/ionian/socket.rb', line 92</span>
854
+
855
+ <span class='kw'>def</span> <span class='id identifier rubyid_expression'>expression</span>
856
+ <span class='ivar'>@expression</span> <span class='op'>||</span> <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_expression'>expression</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="expression=-instance_method">
865
+
866
+ - (<tt>Object</tt>) <strong>expression=</strong>(exp)
867
+
490
868
 
491
-
492
- </div>
869
+
493
870
 
871
+
872
+ </h3><div class="docstring">
873
+ <div class="discussion">
494
874
 
495
- <div id="method-i-flush" class="method-detail ">
496
-
497
- <div class="method-heading">
498
- <span class="method-name">flush</span><span
499
- class="method-args">()</span>
500
-
501
- <span class="method-click-advice">click to toggle source</span>
502
-
503
- </div>
504
-
875
+ <p>Set the regular expression used to match incoming data.</p>
505
876
 
506
- <div class="method-description">
507
-
508
- <p>Flushes buffered data to the operating system. This method has no effect on
509
- non-persistent sockets.</p>
510
-
511
-
512
877
 
513
-
514
- <div class="method-source-code" id="flush-source">
515
- <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 166</span>
516
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">flush</span>
517
- <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">flush</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@persistent</span>
518
- <span class="ruby-keyword">end</span></pre>
519
- </div>
520
-
521
- </div>
878
+ </div>
879
+ </div>
880
+ <div class="tags">
881
+
522
882
 
523
-
883
+ </div><table class="source_code">
884
+ <tr>
885
+ <td>
886
+ <pre class="lines">
887
+
888
+
889
+ 97
890
+ 98
891
+ 99
892
+ 100</pre>
893
+ </td>
894
+ <td>
895
+ <pre class="code"><span class="info file"># File 'lib/ionian/socket.rb', line 97</span>
896
+
897
+ <span class='kw'>def</span> <span class='id identifier rubyid_expression='>expression=</span><span class='lparen'>(</span><span class='id identifier rubyid_exp'>exp</span><span class='rparen'>)</span>
898
+ <span class='ivar'>@expression</span> <span class='op'>=</span> <span class='id identifier rubyid_exp'>exp</span>
899
+ <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_expression'>expression</span> <span class='op'>=</span> <span class='id identifier rubyid_exp'>exp</span> <span class='kw'>if</span> <span class='ivar'>@socket</span>
900
+ <span class='kw'>end</span></pre>
901
+ </td>
902
+ </tr>
903
+ </table>
904
+ </div>
905
+
906
+ <div class="method_details ">
907
+ <h3 class="signature " id="flush-instance_method">
908
+
909
+ - (<tt>Object</tt>) <strong>flush</strong>
910
+
524
911
 
525
-
526
- </div>
912
+
527
913
 
914
+
915
+ </h3><div class="docstring">
916
+ <div class="discussion">
528
917
 
529
- <div id="method-i-has_data-3F" class="method-detail ">
530
-
531
- <div class="method-heading">
532
- <span class="method-name">has_data?</span><span
533
- class="method-args">(**kwargs)</span>
534
-
535
- <span class="method-click-advice">click to toggle source</span>
536
-
537
- </div>
538
-
539
-
540
- <div class="method-description">
541
-
542
- <p>Returns true if there is data in the receive buffer. Args:</p>
918
+ <p>Flushes buffered data to the operating system. This method has no effect on
919
+ non-persistent sockets.</p>
543
920
 
544
- <pre>Timeout: Number of seconds to wait for data until
545
- giving up. Set to nil for blocking.</pre>
546
-
547
-
548
921
 
549
-
550
- <div class="method-source-code" id="has_data-3F-source">
551
- <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 153</span>
552
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">has_data?</span>(<span class="ruby-operator">**</span><span class="ruby-identifier">kwargs</span>)
553
- <span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@socket</span>
554
- <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">has_data?</span> <span class="ruby-identifier">kwargs</span>
555
- <span class="ruby-keyword">end</span></pre>
556
- </div>
557
-
558
- </div>
922
+ </div>
923
+ </div>
924
+ <div class="tags">
925
+
559
926
 
560
-
927
+ </div><table class="source_code">
928
+ <tr>
929
+ <td>
930
+ <pre class="lines">
931
+
932
+
933
+ 166
934
+ 167
935
+ 168</pre>
936
+ </td>
937
+ <td>
938
+ <pre class="code"><span class="info file"># File 'lib/ionian/socket.rb', line 166</span>
939
+
940
+ <span class='kw'>def</span> <span class='id identifier rubyid_flush'>flush</span>
941
+ <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_flush'>flush</span> <span class='kw'>if</span> <span class='ivar'>@persistent</span>
942
+ <span class='kw'>end</span></pre>
943
+ </td>
944
+ </tr>
945
+ </table>
946
+ </div>
947
+
948
+ <div class="method_details ">
949
+ <h3 class="signature " id="has_data?-instance_method">
950
+
951
+ - (<tt>Boolean</tt>) <strong>has_data?</strong>(**kwargs)
952
+
561
953
 
562
-
563
- </div>
954
+
564
955
 
956
+
957
+ </h3><div class="docstring">
958
+ <div class="discussion">
565
959
 
566
- <div id="method-i-on_match" class="method-detail method-alias">
567
-
568
- <div class="method-heading">
569
- <span class="method-name">on_match</span><span
570
- class="method-args">(&block)</span>
571
-
572
- </div>
573
-
960
+ <p>Returns true if there is data in the receive buffer. Args:</p>
574
961
 
575
- <div class="method-description">
576
-
577
-
578
-
579
-
962
+ <pre class="code ruby"><code class="ruby">Timeout: Number of seconds to wait for data until
963
+ giving up. Set to nil for blocking.</code></pre>
580
964
 
581
-
582
- </div>
583
965
 
584
-
966
+ </div>
967
+ </div>
968
+ <div class="tags">
969
+
970
+ <p class="tag_title">Returns:</p>
971
+ <ul class="return">
972
+
973
+ <li>
974
+
975
+
976
+ <span class='type'>(<tt>Boolean</tt>)</span>
977
+
978
+
979
+
980
+ </li>
981
+
982
+ </ul>
983
+
984
+ </div><table class="source_code">
985
+ <tr>
986
+ <td>
987
+ <pre class="lines">
988
+
989
+
990
+ 153
991
+ 154
992
+ 155
993
+ 156</pre>
994
+ </td>
995
+ <td>
996
+ <pre class="code"><span class="info file"># File 'lib/ionian/socket.rb', line 153</span>
997
+
998
+ <span class='kw'>def</span> <span class='id identifier rubyid_has_data?'>has_data?</span><span class='lparen'>(</span><span class='op'>**</span><span class='id identifier rubyid_kwargs'>kwargs</span><span class='rparen'>)</span>
999
+ <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>unless</span> <span class='ivar'>@socket</span>
1000
+ <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_has_data?'>has_data?</span> <span class='id identifier rubyid_kwargs'>kwargs</span>
1001
+ <span class='kw'>end</span></pre>
1002
+ </td>
1003
+ </tr>
1004
+ </table>
1005
+ </div>
1006
+
1007
+ <div class="method_details ">
1008
+ <h3 class="signature " id="persistent?-instance_method">
1009
+
1010
+ - (<tt>Boolean</tt>) <strong>persistent?</strong>
1011
+
585
1012
 
586
-
587
- <div class="aliases">
588
- Alias for: <a href="Socket.html#method-i-register_observer">register_observer</a>
589
- </div>
590
-
591
- </div>
1013
+
592
1014
 
1015
+
1016
+ </h3><div class="docstring">
1017
+ <div class="discussion">
593
1018
 
594
- <div id="method-i-persistent-3F" class="method-detail ">
595
-
596
- <div class="method-heading">
597
- <span class="method-name">persistent?</span><span
598
- class="method-args">()</span>
599
-
600
- <span class="method-click-advice">click to toggle source</span>
601
-
602
- </div>
603
-
1019
+ <p>Returns true if the socket remains open after writing data.</p>
604
1020
 
605
- <div class="method-description">
606
-
607
- <p>Returns true if the socket remains open after writing data.</p>
608
-
609
-
610
1021
 
611
-
612
- <div class="method-source-code" id="persistent-3F-source">
613
- <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 103</span>
614
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">persistent?</span>
615
- <span class="ruby-ivar">@persistent</span> <span class="ruby-operator">==</span> <span class="ruby-keyword">false</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@persistent</span> <span class="ruby-operator">==</span> <span class="ruby-keyword">nil</span> <span class="ruby-operator">?</span> <span class="ruby-keyword">false</span> <span class="ruby-operator">:</span> <span class="ruby-keyword">true</span>
616
- <span class="ruby-keyword">end</span></pre>
617
- </div>
618
-
619
- </div>
620
-
621
-
1022
+ </div>
1023
+ </div>
1024
+ <div class="tags">
1025
+
1026
+ <p class="tag_title">Returns:</p>
1027
+ <ul class="return">
1028
+
1029
+ <li>
1030
+
1031
+
1032
+ <span class='type'>(<tt>Boolean</tt>)</span>
1033
+
1034
+
1035
+
1036
+ </li>
1037
+
1038
+ </ul>
1039
+
1040
+ </div><table class="source_code">
1041
+ <tr>
1042
+ <td>
1043
+ <pre class="lines">
1044
+
1045
+
1046
+ 103
1047
+ 104
1048
+ 105</pre>
1049
+ </td>
1050
+ <td>
1051
+ <pre class="code"><span class="info file"># File 'lib/ionian/socket.rb', line 103</span>
1052
+
1053
+ <span class='kw'>def</span> <span class='id identifier rubyid_persistent?'>persistent?</span>
1054
+ <span class='ivar'>@persistent</span> <span class='op'>==</span> <span class='kw'>false</span> <span class='op'>||</span> <span class='ivar'>@persistent</span> <span class='op'>==</span> <span class='kw'>nil</span> <span class='op'>?</span> <span class='kw'>false</span> <span class='op'>:</span> <span class='kw'>true</span>
1055
+ <span class='kw'>end</span></pre>
1056
+ </td>
1057
+ </tr>
1058
+ </table>
1059
+ </div>
1060
+
1061
+ <div class="method_details ">
1062
+ <h3 class="signature " id="puts-instance_method">
1063
+
1064
+ - (<tt>Object</tt>) <strong>puts</strong>(*string)
1065
+
622
1066
 
623
-
624
- </div>
1067
+
625
1068
 
1069
+
1070
+ </h3><div class="docstring">
1071
+ <div class="discussion">
626
1072
 
627
- <div id="method-i-puts" class="method-detail ">
628
-
629
- <div class="method-heading">
630
- <span class="method-name">puts</span><span
631
- class="method-args">(*string)</span>
632
-
633
- <span class="method-click-advice">click to toggle source</span>
634
-
635
- </div>
636
-
637
-
638
- <div class="method-description">
639
-
640
- <p>Writes the given string(s) to the socket and appends a newline character to
1073
+ <p>Writes the given string(s) to the socket and appends a newline character to
641
1074
  any string not already ending with one.</p>
642
-
643
-
644
1075
 
645
-
646
- <div class="method-source-code" id="puts-source">
647
- <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 172</span>
648
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">puts</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">string</span>)
649
- <span class="ruby-keyword">self</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">string</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span> <span class="ruby-identifier">s</span>.<span class="ruby-identifier">chomp</span>}.<span class="ruby-identifier">join</span>(<span class="ruby-string">&quot;\n&quot;</span>) <span class="ruby-operator">+</span> <span class="ruby-string">&quot;\n&quot;</span>
650
- <span class="ruby-keyword">end</span></pre>
651
- </div>
652
-
653
- </div>
654
1076
 
655
-
656
-
657
-
658
- </div>
1077
+ </div>
1078
+ </div>
1079
+ <div class="tags">
1080
+
659
1081
 
1082
+ </div><table class="source_code">
1083
+ <tr>
1084
+ <td>
1085
+ <pre class="lines">
1086
+
1087
+
1088
+ 172
1089
+ 173
1090
+ 174</pre>
1091
+ </td>
1092
+ <td>
1093
+ <pre class="code"><span class="info file"># File 'lib/ionian/socket.rb', line 172</span>
1094
+
1095
+ <span class='kw'>def</span> <span class='id identifier rubyid_puts'>puts</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_string'>string</span><span class='rparen'>)</span>
1096
+ <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_write'>write</span> <span class='id identifier rubyid_string'>string</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_s'>s</span><span class='op'>|</span> <span class='id identifier rubyid_s'>s</span><span class='period'>.</span><span class='id identifier rubyid_chomp'>chomp</span><span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\n</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span> <span class='op'>+</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\n</span><span class='tstring_end'>&quot;</span></span>
1097
+ <span class='kw'>end</span></pre>
1098
+ </td>
1099
+ </tr>
1100
+ </table>
1101
+ </div>
660
1102
 
661
- <div id="method-i-register_observer" class="method-detail ">
662
-
663
- <div class="method-heading">
664
- <span class="method-name">register_observer</span><span
665
- class="method-args">(&block)</span>
666
-
667
- <span class="method-click-advice">click to toggle source</span>
668
-
669
- </div>
670
-
1103
+ <div class="method_details ">
1104
+ <h3 class="signature " id="register_observer-instance_method">
1105
+
1106
+ - (<tt>Object</tt>) <strong>register_observer</strong>(&amp;block)
1107
+
671
1108
 
672
- <div class="method-description">
673
-
674
- <p>Register a block to be called when run_match receives matched data. Method
675
- callbacks can be registered with &amp;object.method(:method). Returns a
676
- reference to the given block. block = ionian_socket.register_observer {…}</p>
677
-
678
-
1109
+
1110
+ <span class="aliases">Also known as:
1111
+ <span class="names"><span id='on_match-instance_method'>on_match</span></span>
1112
+ </span>
1113
+
679
1114
 
680
-
681
- <div class="method-source-code" id="register_observer-source">
682
- <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 132</span>
683
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">register_observer</span> <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>
684
- <span class="ruby-ivar">@ionian_listeners</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">block</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@ionian_listeners</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">block</span>
685
- <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">register_observer</span> <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@socket</span>
686
- <span class="ruby-identifier">block</span>
687
- <span class="ruby-keyword">end</span></pre>
688
- </div>
689
-
690
- </div>
1115
+
1116
+ </h3><div class="docstring">
1117
+ <div class="discussion">
1118
+
1119
+ <p>Register a block to be called when #run_match receives matched data. Method
1120
+ callbacks can be registered with &amp;object.method(:method). Returns a
1121
+ reference to the given block. block = ionian_socket.register_observer { … }</p>
691
1122
 
692
-
693
- <div class="aliases">
694
- Also aliased as: <a href="Socket.html#method-i-on_match">on_match</a>
695
- </div>
696
-
697
1123
 
698
-
699
- </div>
1124
+ </div>
1125
+ </div>
1126
+ <div class="tags">
1127
+
700
1128
 
1129
+ </div><table class="source_code">
1130
+ <tr>
1131
+ <td>
1132
+ <pre class="lines">
1133
+
1134
+
1135
+ 132
1136
+ 133
1137
+ 134
1138
+ 135
1139
+ 136</pre>
1140
+ </td>
1141
+ <td>
1142
+ <pre class="code"><span class="info file"># File 'lib/ionian/socket.rb', line 132</span>
1143
+
1144
+ <span class='kw'>def</span> <span class='id identifier rubyid_register_observer'>register_observer</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span>
1145
+ <span class='ivar'>@ionian_listeners</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_block'>block</span> <span class='kw'>unless</span> <span class='ivar'>@ionian_listeners</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span> <span class='id identifier rubyid_block'>block</span>
1146
+ <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_register_observer'>register_observer</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span> <span class='kw'>if</span> <span class='ivar'>@socket</span>
1147
+ <span class='id identifier rubyid_block'>block</span>
1148
+ <span class='kw'>end</span></pre>
1149
+ </td>
1150
+ </tr>
1151
+ </table>
1152
+ </div>
701
1153
 
702
- <div id="method-i-unregister_observer" class="method-detail ">
703
-
704
- <div class="method-heading">
705
- <span class="method-name">unregister_observer</span><span
706
- class="method-args">(&block)</span>
707
-
708
- <span class="method-click-advice">click to toggle source</span>
709
-
710
- </div>
711
-
1154
+ <div class="method_details ">
1155
+ <h3 class="signature " id="unregister_observer-instance_method">
1156
+
1157
+ - (<tt>Object</tt>) <strong>unregister_observer</strong>(&amp;block)
1158
+
712
1159
 
713
- <div class="method-description">
714
-
715
- <p>Unregister a block from being called when matched data is received.</p>
716
-
717
-
1160
+
718
1161
 
719
-
720
- <div class="method-source-code" id="unregister_observer-source">
721
- <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 141</span>
722
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">unregister_observer</span>(<span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
723
- <span class="ruby-ivar">@ionian_listeners</span>.<span class="ruby-identifier">delete_if</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">o</span><span class="ruby-operator">|</span> <span class="ruby-identifier">o</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">block</span>}
724
- <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">unregister_observer</span> <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@socket</span>
725
- <span class="ruby-identifier">block</span>
726
- <span class="ruby-keyword">end</span></pre>
727
- </div>
728
-
729
- </div>
1162
+
1163
+ </h3><div class="docstring">
1164
+ <div class="discussion">
1165
+
1166
+ <p>Unregister a block from being called when matched data is received.</p>
730
1167
 
731
-
732
1168
 
733
-
734
- </div>
1169
+ </div>
1170
+ </div>
1171
+ <div class="tags">
1172
+
735
1173
 
1174
+ </div><table class="source_code">
1175
+ <tr>
1176
+ <td>
1177
+ <pre class="lines">
1178
+
1179
+
1180
+ 141
1181
+ 142
1182
+ 143
1183
+ 144
1184
+ 145</pre>
1185
+ </td>
1186
+ <td>
1187
+ <pre class="code"><span class="info file"># File 'lib/ionian/socket.rb', line 141</span>
1188
+
1189
+ <span class='kw'>def</span> <span class='id identifier rubyid_unregister_observer'>unregister_observer</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
1190
+ <span class='ivar'>@ionian_listeners</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>
1191
+ <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_unregister_observer'>unregister_observer</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span> <span class='kw'>if</span> <span class='ivar'>@socket</span>
1192
+ <span class='id identifier rubyid_block'>block</span>
1193
+ <span class='kw'>end</span></pre>
1194
+ </td>
1195
+ </tr>
1196
+ </table>
1197
+ </div>
736
1198
 
737
- <div id="method-i-write" class="method-detail ">
738
-
739
- <div class="method-heading">
740
- <span class="method-name">write</span><span
741
- class="method-args">(string)</span>
742
-
743
- <span class="method-click-advice">click to toggle source</span>
744
-
745
- </div>
746
-
1199
+ <div class="method_details ">
1200
+ <h3 class="signature " id="write-instance_method">
1201
+
1202
+ - (<tt>Object</tt>) <strong>write</strong>(string)
1203
+
747
1204
 
748
- <div class="method-description">
749
-
750
- <p>Writes the given string to the socket. Returns the number of bytes written.</p>
751
-
752
-
1205
+
1206
+ <span class="aliases">Also known as:
1207
+ <span class="names"><span id='<<-instance_method'>&lt;&lt;</span></span>
1208
+ </span>
1209
+
753
1210
 
754
-
755
- <div class="method-source-code" id="write-source">
756
- <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 178</span>
757
- <span class="ruby-keyword">def</span> <span class="ruby-identifier">write</span>(<span class="ruby-identifier">string</span>)
758
- <span class="ruby-identifier">create_socket</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@persistent</span>
759
-
760
- <span class="ruby-identifier">num_bytes</span> = <span class="ruby-value">0</span>
761
-
762
- <span class="ruby-keyword">if</span> <span class="ruby-ivar">@protocol</span> <span class="ruby-operator">==</span> <span class="ruby-value">:udp</span>
763
- <span class="ruby-identifier">num_bytes</span> = <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">send</span> <span class="ruby-identifier">string</span>, <span class="ruby-value">0</span>
764
- <span class="ruby-keyword">else</span>
765
- <span class="ruby-identifier">num_bytes</span> = <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">write</span> <span class="ruby-identifier">string</span>
766
- <span class="ruby-keyword">end</span>
767
-
768
- <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@persistent</span>
769
- <span class="ruby-comment"># Read in data to prevent RST packets.</span>
770
- <span class="ruby-identifier">has_data</span> = <span class="ruby-operator">::</span><span class="ruby-constant">IO</span>.<span class="ruby-identifier">select</span> [<span class="ruby-ivar">@socket</span>], <span class="ruby-keyword">nil</span>, <span class="ruby-keyword">nil</span>, <span class="ruby-value">0</span>
771
- <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">readpartial</span> <span class="ruby-value">0xFFFF</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">has_data</span>
772
-
773
- <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">close</span>
774
- <span class="ruby-keyword">end</span>
775
-
776
- <span class="ruby-identifier">num_bytes</span>
777
- <span class="ruby-keyword">end</span></pre>
778
- </div>
779
-
780
- </div>
1211
+
1212
+ </h3><div class="docstring">
1213
+ <div class="discussion">
1214
+
1215
+ <p>Writes the given string to the socket. Returns the number of bytes written.</p>
781
1216
 
782
-
783
- <div class="aliases">
784
- Also aliased as: <a href="Socket.html#method-i-3C-3C">&lt;&lt;</a>
785
- </div>
786
-
787
1217
 
788
-
789
- </div>
1218
+ </div>
1219
+ </div>
1220
+ <div class="tags">
1221
+
790
1222
 
1223
+ </div><table class="source_code">
1224
+ <tr>
1225
+ <td>
1226
+ <pre class="lines">
1227
+
1228
+
1229
+ 178
1230
+ 179
1231
+ 180
1232
+ 181
1233
+ 182
1234
+ 183
1235
+ 184
1236
+ 185
1237
+ 186
1238
+ 187
1239
+ 188
1240
+ 189
1241
+ 190
1242
+ 191
1243
+ 192
1244
+ 193
1245
+ 194
1246
+ 195
1247
+ 196
1248
+ 197
1249
+ 198</pre>
1250
+ </td>
1251
+ <td>
1252
+ <pre class="code"><span class="info file"># File 'lib/ionian/socket.rb', line 178</span>
1253
+
1254
+ <span class='kw'>def</span> <span class='id identifier rubyid_write'>write</span><span class='lparen'>(</span><span class='id identifier rubyid_string'>string</span><span class='rparen'>)</span>
1255
+ <span class='id identifier rubyid_create_socket'>create_socket</span> <span class='kw'>unless</span> <span class='ivar'>@persistent</span>
1256
+
1257
+ <span class='id identifier rubyid_num_bytes'>num_bytes</span> <span class='op'>=</span> <span class='int'>0</span>
1258
+
1259
+ <span class='kw'>if</span> <span class='ivar'>@protocol</span> <span class='op'>==</span> <span class='symbol'>:udp</span>
1260
+ <span class='id identifier rubyid_num_bytes'>num_bytes</span> <span class='op'>=</span> <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span> <span class='id identifier rubyid_string'>string</span><span class='comma'>,</span> <span class='int'>0</span>
1261
+ <span class='kw'>else</span>
1262
+ <span class='id identifier rubyid_num_bytes'>num_bytes</span> <span class='op'>=</span> <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_write'>write</span> <span class='id identifier rubyid_string'>string</span>
1263
+ <span class='kw'>end</span>
1264
+
1265
+ <span class='kw'>unless</span> <span class='ivar'>@persistent</span>
1266
+ <span class='comment'># Read in data to prevent RST packets.
1267
+ </span> <span class='id identifier rubyid_has_data'>has_data</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='lbracket'>[</span><span class='ivar'>@socket</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='int'>0</span>
1268
+ <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_readpartial'>readpartial</span> <span class='int'>0xFFFF</span> <span class='kw'>if</span> <span class='id identifier rubyid_has_data'>has_data</span>
791
1269
 
792
- </section>
1270
+ <span class='ivar'>@socket</span><span class='period'>.</span><span class='id identifier rubyid_close'>close</span>
1271
+ <span class='kw'>end</span>
793
1272
 
794
- </section>
795
- </main>
1273
+ <span class='id identifier rubyid_num_bytes'>num_bytes</span>
1274
+ <span class='kw'>end</span></pre>
1275
+ </td>
1276
+ </tr>
1277
+ </table>
1278
+ </div>
1279
+
1280
+ </div>
796
1281
 
1282
+ </div>
797
1283
 
798
- <footer id="validator-badges" role="contentinfo">
799
- <p><a href="http://validator.w3.org/check/referer">Validate</a>
800
- <p>Generated by <a href="http://rdoc.rubyforge.org">RDoc</a> 4.1.1.
801
- <p>Based on <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
802
- </footer>
1284
+ <div id="footer">
1285
+ Generated on Sat Mar 15 21:04:54 2014 by
1286
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1287
+ 0.8.7.3 (ruby-2.1.1).
1288
+ </div>
803
1289
 
1290
+ </body>
1291
+ </html>