ionian 0.4.1 → 0.5.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.
@@ -76,6 +76,14 @@
76
76
  <li><a class="extend" href="Extension/Socket.html">Ionian::Extension::Socket</a>
77
77
 
78
78
 
79
+
80
+ <li><a class="extend" href="Extension/Socket.html">Ionian::Extension::Socket</a>
81
+
82
+
83
+
84
+ <li><a class="extend" href="Extension/Socket.html">Ionian::Extension::Socket</a>
85
+
86
+
79
87
  </ul>
80
88
  </div>
81
89
 
@@ -156,28 +164,49 @@
156
164
 
157
165
  <p>Args:</p>
158
166
 
159
- <pre>host: IP or hostname to connect to.
160
- port: Connection&#39;s port number. Default is 23. Unused by :unix protocol.
161
- protocol: Type of socket to create. :tcp, :udp, :unix. Default is :tcp.
167
+ <pre>host: IP or hostname to connect to.
168
+ port: Connection&#39;s port number. Default is 23. Unused by :unix protocol.
169
+ protocol: Type of socket to create. :tcp, :udp, :unix. Default is :tcp.
170
+ :udp will be automatically selected for addresses in the multicast range.
162
171
  persistent: The socket remains open after data is sent if this is true.
163
172
  The socket closes after data is sent and a packet is received
164
173
  if this is false. Default is true.
174
+ bind_port: Local UDP port to bind to for receiving data, if different than
175
+ the remote port being connected to.
176
+ reuse_addr: Set true to enable the SO_REUSEADDR flag. Allows local address reuse.
177
+ no_delay: Set true to enable the TCP_NODELAY flag. Disables Nagle algorithm.
178
+ cork: Set true to enable the TCP_CORK flag. Buffers multiple writes
179
+ into one segment.
165
180
  expression: Overrides the #read_match regular expression for received data.</pre>
166
181
 
167
182
 
168
183
 
169
184
 
170
185
  <div class="method-source-code" id="new-source">
171
- <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 16</span>
186
+ <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 23</span>
172
187
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-operator">**</span><span class="ruby-identifier">kwargs</span>)
173
188
  <span class="ruby-ivar">@socket</span> = <span class="ruby-keyword">nil</span>
174
189
 
190
+ <span class="ruby-comment"># TODO: Should be able to parse the port out of host.</span>
191
+ <span class="ruby-comment"># :port should override this parsed value.</span>
192
+
175
193
  <span class="ruby-ivar">@host</span> = <span class="ruby-identifier">kwargs</span>.<span class="ruby-identifier">fetch</span> <span class="ruby-value">:host</span>
176
- <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>
177
- <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-value">:tcp</span>
194
+ <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>
195
+ <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>
196
+
197
+ <span class="ruby-comment"># Automatically select UDP for the multicast range. Otherwise default to TCP.</span>
198
+ <span class="ruby-identifier">default_protocol</span> = <span class="ruby-value">:tcp</span>
199
+ <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>
200
+ <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>
201
+
202
+ <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>
178
203
  <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>
179
204
  <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>
180
205
 
206
+ <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>
207
+ <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>
208
+ <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>
209
+
181
210
  <span class="ruby-identifier">create_socket</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@persistent</span>
182
211
  <span class="ruby-keyword">end</span></pre>
183
212
  </div>
@@ -245,7 +274,7 @@ expression: Overrides the #read_match regular expression for received data.</pre
245
274
 
246
275
 
247
276
  <div class="method-source-code" id="closed-3F-source">
248
- <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 73</span>
277
+ <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 94</span>
249
278
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">closed?</span>
250
279
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">true</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@socket</span>
251
280
  <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">closed?</span>
@@ -281,7 +310,7 @@ href="Extension/IO.html#method-i-read_match">Ionian::Extension::IO#read_match</a
281
310
 
282
311
 
283
312
  <div class="method-source-code" id="cmd-source">
284
- <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 43</span>
313
+ <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 64</span>
285
314
  <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>)
286
315
  <span class="ruby-identifier">create_socket</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@persistent</span>
287
316
 
@@ -328,7 +357,7 @@ non-persistent sockets.</p>
328
357
 
329
358
 
330
359
  <div class="method-source-code" id="flush-source">
331
- <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 80</span>
360
+ <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 101</span>
332
361
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">flush</span>
333
362
  <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">flush</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@persistent</span>
334
363
  <span class="ruby-keyword">end</span></pre>
@@ -364,7 +393,7 @@ non-persistent sockets.</p>
364
393
 
365
394
 
366
395
  <div class="method-source-code" id="has_data-3F-source">
367
- <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 67</span>
396
+ <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 88</span>
368
397
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">has_data?</span>(<span class="ruby-operator">**</span><span class="ruby-identifier">kwargs</span>)
369
398
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@socket</span>
370
399
  <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">has_data?</span> <span class="ruby-identifier">kwargs</span>
@@ -398,7 +427,7 @@ non-persistent sockets.</p>
398
427
 
399
428
 
400
429
  <div class="method-source-code" id="persistent-3F-source">
401
- <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 35</span>
430
+ <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 56</span>
402
431
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">persistent?</span>
403
432
  <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>
404
433
  <span class="ruby-keyword">end</span></pre>
@@ -432,7 +461,7 @@ non-persistent sockets.</p>
432
461
 
433
462
 
434
463
  <div class="method-source-code" id="protocol-3F-source">
435
- <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 30</span>
464
+ <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 51</span>
436
465
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">protocol?</span>
437
466
  <span class="ruby-ivar">@protocol</span>
438
467
  <span class="ruby-keyword">end</span></pre>
@@ -466,7 +495,7 @@ any string not already ending with one.</p>
466
495
 
467
496
 
468
497
  <div class="method-source-code" id="puts-source">
469
- <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 86</span>
498
+ <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 107</span>
470
499
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">puts</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">string</span>)
471
500
  <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>
472
501
  <span class="ruby-keyword">end</span></pre>
@@ -499,7 +528,7 @@ any string not already ending with one.</p>
499
528
 
500
529
 
501
530
  <div class="method-source-code" id="write-source">
502
- <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 92</span>
531
+ <pre><span class="ruby-comment"># File lib/ionian/socket.rb, line 113</span>
503
532
  <span class="ruby-keyword">def</span> <span class="ruby-identifier">write</span>(<span class="ruby-identifier">string</span>)
504
533
  <span class="ruby-identifier">create_socket</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@persistent</span>
505
534
 
data/doc/created.rid CHANGED
@@ -1,5 +1,5 @@
1
- Tue, 03 Dec 2013 19:30:58 -0800
1
+ Mon, 09 Dec 2013 18:32:49 -0800
2
2
  lib/ionian.rb Tue, 03 Dec 2013 19:30:50 -0800
3
- lib/ionian/extension/io.rb Tue, 03 Dec 2013 19:28:00 -0800
4
- lib/ionian/extension/socket.rb Tue, 03 Dec 2013 19:28:50 -0800
5
- lib/ionian/socket.rb Tue, 03 Dec 2013 19:29:44 -0800
3
+ lib/ionian/extension/io.rb Wed, 04 Dec 2013 19:25:58 -0800
4
+ lib/ionian/extension/socket.rb Sat, 07 Dec 2013 14:02:46 -0800
5
+ lib/ionian/socket.rb Sat, 07 Dec 2013 15:13:22 -0800
@@ -1 +1 @@
1
- var search_data = {"index":{"searchIndex":["ionian","extension","io","socket","socket","<<()","closed?()","cmd()","expression()","expression=()","extended()","extended()","flush()","has_data?()","has_data?()","initialize_ionian()","initialize_ionian_socket()","new()","no_delay()","no_delay=()","on_match()","persistent?()","protocol?()","purge()","puts()","read_match()","register_observer()","run_match()","unregister_observer()","write()"],"longSearchIndex":["ionian","ionian::extension","ionian::extension::io","ionian::extension::socket","ionian::socket","ionian::socket#<<()","ionian::socket#closed?()","ionian::socket#cmd()","ionian::extension::io#expression()","ionian::extension::io#expression=()","ionian::extension::io::extended()","ionian::extension::socket::extended()","ionian::socket#flush()","ionian::extension::io#has_data?()","ionian::socket#has_data?()","ionian::extension::io#initialize_ionian()","ionian::extension::socket#initialize_ionian_socket()","ionian::socket::new()","ionian::extension::socket#no_delay()","ionian::extension::socket#no_delay=()","ionian::extension::io#on_match()","ionian::socket#persistent?()","ionian::socket#protocol?()","ionian::extension::io#purge()","ionian::socket#puts()","ionian::extension::io#read_match()","ionian::extension::io#register_observer()","ionian::extension::io#run_match()","ionian::extension::io#unregister_observer()","ionian::socket#write()"],"info":[["Ionian","","Ionian.html","","<p>A library to simplify interaction with IO streams. This includes network\nsockets, file sockets, and serial …\n"],["Ionian::Extension","","Ionian/Extension.html","","<p>A collection of mixins.\n"],["Ionian::Extension::IO","","Ionian/Extension/IO.html","","<p>A mixin for IO objects that allows regular expression matching and\nconvenient notification of received …\n"],["Ionian::Extension::Socket","","Ionian/Extension/Socket.html","","<p>A mixin for Socket objects.\n<p>This module was designed to be extended by instantiated objects that\nimplement …\n"],["Ionian::Socket","","Ionian/Socket.html","","<p>A convenient wrapper for TCP, UDP, and Unix sockets.\n"],["<<","Ionian::Socket","Ionian/Socket.html#method-i-3C-3C","(string)",""],["closed?","Ionian::Socket","Ionian/Socket.html#method-i-closed-3F","()","<p>Returns true if the socket is closed.\n"],["cmd","Ionian::Socket","Ionian/Socket.html#method-i-cmd","(string, **kwargs, &block)","<p>Send a command (data) to the socket. Returns an array of received matches.\nBlock yields received match. …\n"],["expression","Ionian::Extension::IO","Ionian/Extension/IO.html#method-i-expression","()","<p>Returns the regular expression used for #read_match.\n"],["expression=","Ionian::Extension::IO","Ionian/Extension/IO.html#method-i-expression-3D","(exp)","<p>Set the expression to match against the read buffer. Can be a regular\nexpression specifying capture groups, …\n"],["extended","Ionian::Extension::IO","Ionian/Extension/IO.html#method-c-extended","(obj)","<p>Called automaticallly when the object is extended with #extend.\n"],["extended","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-c-extended","(obj)","<p>Called automaticallly when the object is extended with #extend.\n"],["flush","Ionian::Socket","Ionian/Socket.html#method-i-flush","()","<p>Flushes buffered data to the operating system. This method has no effect on\nnon-persistent sockets.\n"],["has_data?","Ionian::Extension::IO","Ionian/Extension/IO.html#method-i-has_data-3F","(timeout: 0)","<p>Returns true if there is data in the receive buffer. Args:\n\n<pre>Timeout: Number of seconds to wait for data ...</pre>\n"],["has_data?","Ionian::Socket","Ionian/Socket.html#method-i-has_data-3F","(**kwargs)","<p>Returns true if there is data in the receive buffer. Args:\n\n<pre>Timeout: Number of seconds to wait for data ...</pre>\n"],["initialize_ionian","Ionian::Extension::IO","Ionian/Extension/IO.html#method-i-initialize_ionian","()","<p>Initialize the Ionian instance variables. This is called automatically if\n#extend is called on an object. …\n"],["initialize_ionian_socket","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-initialize_ionian_socket","()","<p>Initialize the Ionian Socket variables. This is called automatically if\n#extend is called on an object. …\n"],["new","Ionian::Socket","Ionian/Socket.html#method-c-new","(**kwargs)","<p>Args:\n\n<pre>host: IP or hostname to connect to.\nport: Connection&#39;s port number. Default is 23. Unused by :unix ...</pre>\n"],["no_delay","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-no_delay","()","<p>Returns true if the TCP_NODELAY flag is enabled (Nagle disabled). Otherwise\nfalse.\n"],["no_delay=","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-no_delay-3D","(value)","<p>Setting to true enables the TCP_NODELAY flag (disables Nagle). Setting to\nfalse disables the flag (enables …\n"],["on_match","Ionian::Extension::IO","Ionian/Extension/IO.html#method-i-on_match","(&block)",""],["persistent?","Ionian::Socket","Ionian/Socket.html#method-i-persistent-3F","()","<p>Returns true if the socket remains open after writing data.\n"],["protocol?","Ionian::Socket","Ionian/Socket.html#method-i-protocol-3F","()","<p>Returns a symbol of the type of protocol this socket uses: :tcp, :udp,\n:unix\n"],["purge","Ionian::Extension::IO","Ionian/Extension/IO.html#method-i-purge","()","<p>Erase the data in the IO and Ionian buffers. This is typically handled\nautomatically.\n"],["puts","Ionian::Socket","Ionian/Socket.html#method-i-puts","(*string)","<p>Writes the given string(s) to the socket and appends a newline character to\nany string not already ending …\n"],["read_match","Ionian::Extension::IO","Ionian/Extension/IO.html#method-i-read_match","(**kwargs, &block)","<p>Read matched data from the buffer. This method SHOULD NOT be used if\n#run_match is used.\n<p>Passes matches …\n"],["register_observer","Ionian::Extension::IO","Ionian/Extension/IO.html#method-i-register_observer","(&block)","<p>Register a block to be called when #run_match receives matched data. Method\ncallbacks can be registered …\n"],["run_match","Ionian::Extension::IO","Ionian/Extension/IO.html#method-i-run_match","(**kwargs)","<p>Start a thread that checks for data and notifies listeners (do |match,\nsocket|). Passes kwargs to #read_match …\n"],["unregister_observer","Ionian::Extension::IO","Ionian/Extension/IO.html#method-i-unregister_observer","(&block)","<p>Unregister a block from being called when matched data is received.\n"],["write","Ionian::Socket","Ionian/Socket.html#method-i-write","(string)","<p>Writes the given string to the socket. Returns the number of bytes written.\n"]]}}
1
+ var search_data = {"index":{"searchIndex":["ionian","extension","io","socket","socket","<<()","closed?()","cmd()","cork()","cork=()","cork?()","expression()","expression=()","extended()","extended()","flush()","has_data?()","has_data?()","initialize_ionian()","initialize_ionian_socket()","ip_add_membership()","ip_drop_membership()","ip_multicast_if()","ip_multicast_if=()","ip_multicast_loop()","ip_multicast_loop=()","ip_multicast_loop?()","ip_multicast_ttl()","ip_multicast_ttl=()","ipv6_add_membership()","ipv6_drop_membership()","ipv6_multicast_hops()","ipv6_multicast_hops=()","ipv6_multicast_if()","ipv6_multicast_if=()","ipv6_multicast_loop()","ipv6_multicast_loop=()","ipv6_multicast_loop?()","multicast()","multicast?()","new()","no_delay()","no_delay=()","no_delay?()","on_match()","persistent?()","protocol?()","purge()","puts()","read_match()","recork()","register_observer()","reuse_addr()","reuse_addr=()","reuse_addr?()","run_match()","ttl()","ttl=()","ttl?()","unregister_observer()","write()"],"longSearchIndex":["ionian","ionian::extension","ionian::extension::io","ionian::extension::socket","ionian::socket","ionian::socket#<<()","ionian::socket#closed?()","ionian::socket#cmd()","ionian::extension::socket#cork()","ionian::extension::socket#cork=()","ionian::extension::socket#cork?()","ionian::extension::io#expression()","ionian::extension::io#expression=()","ionian::extension::io::extended()","ionian::extension::socket::extended()","ionian::socket#flush()","ionian::extension::io#has_data?()","ionian::socket#has_data?()","ionian::extension::io#initialize_ionian()","ionian::extension::socket#initialize_ionian_socket()","ionian::extension::socket#ip_add_membership()","ionian::extension::socket#ip_drop_membership()","ionian::extension::socket#ip_multicast_if()","ionian::extension::socket#ip_multicast_if=()","ionian::extension::socket#ip_multicast_loop()","ionian::extension::socket#ip_multicast_loop=()","ionian::extension::socket#ip_multicast_loop?()","ionian::extension::socket#ip_multicast_ttl()","ionian::extension::socket#ip_multicast_ttl=()","ionian::extension::socket#ipv6_add_membership()","ionian::extension::socket#ipv6_drop_membership()","ionian::extension::socket#ipv6_multicast_hops()","ionian::extension::socket#ipv6_multicast_hops=()","ionian::extension::socket#ipv6_multicast_if()","ionian::extension::socket#ipv6_multicast_if=()","ionian::extension::socket#ipv6_multicast_loop()","ionian::extension::socket#ipv6_multicast_loop=()","ionian::extension::socket#ipv6_multicast_loop?()","ionian::extension::socket#multicast()","ionian::extension::socket#multicast?()","ionian::socket::new()","ionian::extension::socket#no_delay()","ionian::extension::socket#no_delay=()","ionian::extension::socket#no_delay?()","ionian::extension::io#on_match()","ionian::socket#persistent?()","ionian::socket#protocol?()","ionian::extension::io#purge()","ionian::socket#puts()","ionian::extension::io#read_match()","ionian::extension::socket#recork()","ionian::extension::io#register_observer()","ionian::extension::socket#reuse_addr()","ionian::extension::socket#reuse_addr=()","ionian::extension::socket#reuse_addr?()","ionian::extension::io#run_match()","ionian::extension::socket#ttl()","ionian::extension::socket#ttl=()","ionian::extension::socket#ttl?()","ionian::extension::io#unregister_observer()","ionian::socket#write()"],"info":[["Ionian","","Ionian.html","","<p>A library to simplify interaction with IO streams. This includes network\nsockets, file sockets, and serial …\n"],["Ionian::Extension","","Ionian/Extension.html","","<p>A collection of mixins.\n"],["Ionian::Extension::IO","","Ionian/Extension/IO.html","","<p>A mixin for IO objects that allows regular expression matching and\nconvenient notification of received …\n"],["Ionian::Extension::Socket","","Ionian/Extension/Socket.html","","<p>A mixin for Socket objects.\n<p>This module was designed to be extended by instantiated objects that\nimplement …\n"],["Ionian::Socket","","Ionian/Socket.html","","<p>A convenient wrapper for TCP, UDP, and Unix sockets.\n"],["<<","Ionian::Socket","Ionian/Socket.html#method-i-3C-3C","(string)",""],["closed?","Ionian::Socket","Ionian/Socket.html#method-i-closed-3F","()","<p>Returns true if the socket is closed.\n"],["cmd","Ionian::Socket","Ionian/Socket.html#method-i-cmd","(string, **kwargs, &block)","<p>Send a command (data) to the socket. Returns an array of received matches.\nBlock yields received match. …\n"],["cork","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-cork","()","<p>Returns true if multiple writes are buffered into a single segment. See\n#recork. Linux only. ( TCP_CORK …\n"],["cork=","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-cork-3D","(value)","<p>Buffers multiple writes into a single segment if true. The segment is sent\nonce the cork flag is disabled, …\n"],["cork?","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-cork-3F","()",""],["expression","Ionian::Extension::IO","Ionian/Extension/IO.html#method-i-expression","()","<p>Returns the regular expression used for #read_match.\n"],["expression=","Ionian::Extension::IO","Ionian/Extension/IO.html#method-i-expression-3D","(exp)","<p>Set the expression to match against the read buffer. Can be a regular\nexpression specifying capture groups, …\n"],["extended","Ionian::Extension::IO","Ionian/Extension/IO.html#method-c-extended","(obj)","<p>Called automaticallly when the object is extended with #extend.\n"],["extended","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-c-extended","(obj)","<p>Called automaticallly when the object is extended with #extend.\n"],["flush","Ionian::Socket","Ionian/Socket.html#method-i-flush","()","<p>Flushes buffered data to the operating system. This method has no effect on\nnon-persistent sockets.\n"],["has_data?","Ionian::Extension::IO","Ionian/Extension/IO.html#method-i-has_data-3F","(timeout: 0)","<p>Returns true if there is data in the receive buffer. Args:\n\n<pre>Timeout: Number of seconds to wait for data ...</pre>\n"],["has_data?","Ionian::Socket","Ionian/Socket.html#method-i-has_data-3F","(**kwargs)","<p>Returns true if there is data in the receive buffer. Args:\n\n<pre>Timeout: Number of seconds to wait for data ...</pre>\n"],["initialize_ionian","Ionian::Extension::IO","Ionian/Extension/IO.html#method-i-initialize_ionian","()","<p>Initialize the Ionian instance variables. This is called automatically if\n#extend is called on an object. …\n"],["initialize_ionian_socket","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-initialize_ionian_socket","()","<p>Initialize the Ionian Socket variables. This is called automatically if\n#extend is called on an object. …\n"],["ip_add_membership","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-ip_add_membership","(address = nil, interface = nil)","<p>Join a multicast group. Address is the class D multicast address (uses\nremote address if not specified). …\n"],["ip_drop_membership","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-ip_drop_membership","(address = nil, interface = nil)","<p>Leave a multicast group. Address is the class D multicast address (uses\nremote address if not specified). …\n"],["ip_multicast_if","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-ip_multicast_if","()","<p>Returns the default interface for outgoing multicasts. ( IP_MULTICAST_IF )\n"],["ip_multicast_if=","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-ip_multicast_if-3D","(interface = nil)","<p>Specify default interface for outgoing multicasts. ( IP_MULTICAST_IF )\n"],["ip_multicast_loop","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-ip_multicast_loop","()","<p>Returns true if loopback of outgoing multicasts is enabled. (\nIP_MULTICAST_LOOP )\n"],["ip_multicast_loop=","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-ip_multicast_loop-3D","(value)","<p>Enables loopback of outgoing multicasts if true. ( IP_MULTICAST_LOOP )\n"],["ip_multicast_loop?","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-ip_multicast_loop-3F","()",""],["ip_multicast_ttl","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-ip_multicast_ttl","()","<p>Returns the time to live (hop limit) for outgoing multicasts. (\nIP_MULTICAST_TTL )\n"],["ip_multicast_ttl=","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-ip_multicast_ttl-3D","(value)","<p>Set the time to live (hop limit) for outgoing multicasts. (\nIP_MULTICAST_TTL )\n"],["ipv6_add_membership","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-ipv6_add_membership","()",""],["ipv6_drop_membership","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-ipv6_drop_membership","()",""],["ipv6_multicast_hops","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-ipv6_multicast_hops","()",""],["ipv6_multicast_hops=","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-ipv6_multicast_hops-3D","(value)",""],["ipv6_multicast_if","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-ipv6_multicast_if","()",""],["ipv6_multicast_if=","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-ipv6_multicast_if-3D","(value)",""],["ipv6_multicast_loop","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-ipv6_multicast_loop","()",""],["ipv6_multicast_loop=","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-ipv6_multicast_loop-3D","(value)",""],["ipv6_multicast_loop?","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-ipv6_multicast_loop-3F","()",""],["multicast","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-multicast","(address)","<p>Returns true if the given address is within the multicast range.\n"],["multicast?","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-multicast-3F","(address)",""],["new","Ionian::Socket","Ionian/Socket.html#method-c-new","(**kwargs)","<p>Args:\n\n<pre>host: IP or hostname to connect to.\nport: Connection&#39;s port number. Default is 23. Unused ...</pre>\n"],["no_delay","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-no_delay","()","<p>Returns true if the Nagle algorithm is disabled. ( TCP_NODELAY )\n"],["no_delay=","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-no_delay-3D","(value)","<p>Disables the Nagle algorithm if true. ( TCP_NODELAY )\n"],["no_delay?","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-no_delay-3F","()",""],["on_match","Ionian::Extension::IO","Ionian/Extension/IO.html#method-i-on_match","(&block)",""],["persistent?","Ionian::Socket","Ionian/Socket.html#method-i-persistent-3F","()","<p>Returns true if the socket remains open after writing data.\n"],["protocol?","Ionian::Socket","Ionian/Socket.html#method-i-protocol-3F","()","<p>Returns a symbol of the type of protocol this socket uses: :tcp, :udp,\n:unix\n"],["purge","Ionian::Extension::IO","Ionian/Extension/IO.html#method-i-purge","()","<p>Erase the data in the IO and Ionian buffers. This is typically handled\nautomatically.\n"],["puts","Ionian::Socket","Ionian/Socket.html#method-i-puts","(*string)","<p>Writes the given string(s) to the socket and appends a newline character to\nany string not already ending …\n"],["read_match","Ionian::Extension::IO","Ionian/Extension/IO.html#method-i-read_match","(**kwargs, &block)","<p>Read matched data from the buffer. This method SHOULD NOT be used if\n#run_match is used.\n<p>Passes matches …\n"],["recork","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-recork","()","<p>Unsets cork to transmit data, then reapplies cork. ( TCP_CORK )\n"],["register_observer","Ionian::Extension::IO","Ionian/Extension/IO.html#method-i-register_observer","(&block)","<p>Register a block to be called when #run_match receives matched data. Method\ncallbacks can be registered …\n"],["reuse_addr","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-reuse_addr","()","<p>Returns true if local address reuse is allowed. ( SO_REUSEADDR )\n"],["reuse_addr=","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-reuse_addr-3D","(value)","<p>Allows local address reuse if true. ( SO_REUSEADDR )\n"],["reuse_addr?","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-reuse_addr-3F","()",""],["run_match","Ionian::Extension::IO","Ionian/Extension/IO.html#method-i-run_match","(**kwargs)","<p>Start a thread that checks for data and notifies listeners (do |match,\nsocket|). Passes kwargs to #read_match …\n"],["ttl","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-ttl","()","<p>Returns the time to live (hop limit). ( IP_TTL )\n"],["ttl=","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-ttl-3D","(value)","<p>Sets the time to live (hop limit). ( IP_TTL )\n"],["ttl?","Ionian::Extension::Socket","Ionian/Extension/Socket.html#method-i-ttl-3F","()",""],["unregister_observer","Ionian::Extension::IO","Ionian/Extension/IO.html#method-i-unregister_observer","(&block)","<p>Unregister a block from being called when matched data is received.\n"],["write","Ionian::Socket","Ionian/Socket.html#method-i-write","(string)","<p>Writes the given string to the socket. Returns the number of bytes written.\n"]]}}
@@ -78,6 +78,21 @@
78
78
  &mdash;
79
79
  <span class="container">Ionian::Socket</span>
80
80
 
81
+ <li class="method">
82
+ <a href="Ionian/Extension/Socket.html#method-i-cork">#cork</a>
83
+ &mdash;
84
+ <span class="container">Ionian::Extension::Socket</span>
85
+
86
+ <li class="method">
87
+ <a href="Ionian/Extension/Socket.html#method-i-cork-3D">#cork=</a>
88
+ &mdash;
89
+ <span class="container">Ionian::Extension::Socket</span>
90
+
91
+ <li class="method">
92
+ <a href="Ionian/Extension/Socket.html#method-i-cork-3F">#cork?</a>
93
+ &mdash;
94
+ <span class="container">Ionian::Extension::Socket</span>
95
+
81
96
  <li class="method">
82
97
  <a href="Ionian/Extension/IO.html#method-i-expression">#expression</a>
83
98
  &mdash;
@@ -113,6 +128,106 @@
113
128
  &mdash;
114
129
  <span class="container">Ionian::Extension::Socket</span>
115
130
 
131
+ <li class="method">
132
+ <a href="Ionian/Extension/Socket.html#method-i-ip_add_membership">#ip_add_membership</a>
133
+ &mdash;
134
+ <span class="container">Ionian::Extension::Socket</span>
135
+
136
+ <li class="method">
137
+ <a href="Ionian/Extension/Socket.html#method-i-ip_drop_membership">#ip_drop_membership</a>
138
+ &mdash;
139
+ <span class="container">Ionian::Extension::Socket</span>
140
+
141
+ <li class="method">
142
+ <a href="Ionian/Extension/Socket.html#method-i-ip_multicast_if">#ip_multicast_if</a>
143
+ &mdash;
144
+ <span class="container">Ionian::Extension::Socket</span>
145
+
146
+ <li class="method">
147
+ <a href="Ionian/Extension/Socket.html#method-i-ip_multicast_if-3D">#ip_multicast_if=</a>
148
+ &mdash;
149
+ <span class="container">Ionian::Extension::Socket</span>
150
+
151
+ <li class="method">
152
+ <a href="Ionian/Extension/Socket.html#method-i-ip_multicast_loop">#ip_multicast_loop</a>
153
+ &mdash;
154
+ <span class="container">Ionian::Extension::Socket</span>
155
+
156
+ <li class="method">
157
+ <a href="Ionian/Extension/Socket.html#method-i-ip_multicast_loop-3D">#ip_multicast_loop=</a>
158
+ &mdash;
159
+ <span class="container">Ionian::Extension::Socket</span>
160
+
161
+ <li class="method">
162
+ <a href="Ionian/Extension/Socket.html#method-i-ip_multicast_loop-3F">#ip_multicast_loop?</a>
163
+ &mdash;
164
+ <span class="container">Ionian::Extension::Socket</span>
165
+
166
+ <li class="method">
167
+ <a href="Ionian/Extension/Socket.html#method-i-ip_multicast_ttl">#ip_multicast_ttl</a>
168
+ &mdash;
169
+ <span class="container">Ionian::Extension::Socket</span>
170
+
171
+ <li class="method">
172
+ <a href="Ionian/Extension/Socket.html#method-i-ip_multicast_ttl-3D">#ip_multicast_ttl=</a>
173
+ &mdash;
174
+ <span class="container">Ionian::Extension::Socket</span>
175
+
176
+ <li class="method">
177
+ <a href="Ionian/Extension/Socket.html#method-i-ipv6_add_membership">#ipv6_add_membership</a>
178
+ &mdash;
179
+ <span class="container">Ionian::Extension::Socket</span>
180
+
181
+ <li class="method">
182
+ <a href="Ionian/Extension/Socket.html#method-i-ipv6_drop_membership">#ipv6_drop_membership</a>
183
+ &mdash;
184
+ <span class="container">Ionian::Extension::Socket</span>
185
+
186
+ <li class="method">
187
+ <a href="Ionian/Extension/Socket.html#method-i-ipv6_multicast_hops">#ipv6_multicast_hops</a>
188
+ &mdash;
189
+ <span class="container">Ionian::Extension::Socket</span>
190
+
191
+ <li class="method">
192
+ <a href="Ionian/Extension/Socket.html#method-i-ipv6_multicast_hops-3D">#ipv6_multicast_hops=</a>
193
+ &mdash;
194
+ <span class="container">Ionian::Extension::Socket</span>
195
+
196
+ <li class="method">
197
+ <a href="Ionian/Extension/Socket.html#method-i-ipv6_multicast_if">#ipv6_multicast_if</a>
198
+ &mdash;
199
+ <span class="container">Ionian::Extension::Socket</span>
200
+
201
+ <li class="method">
202
+ <a href="Ionian/Extension/Socket.html#method-i-ipv6_multicast_if-3D">#ipv6_multicast_if=</a>
203
+ &mdash;
204
+ <span class="container">Ionian::Extension::Socket</span>
205
+
206
+ <li class="method">
207
+ <a href="Ionian/Extension/Socket.html#method-i-ipv6_multicast_loop">#ipv6_multicast_loop</a>
208
+ &mdash;
209
+ <span class="container">Ionian::Extension::Socket</span>
210
+
211
+ <li class="method">
212
+ <a href="Ionian/Extension/Socket.html#method-i-ipv6_multicast_loop-3D">#ipv6_multicast_loop=</a>
213
+ &mdash;
214
+ <span class="container">Ionian::Extension::Socket</span>
215
+
216
+ <li class="method">
217
+ <a href="Ionian/Extension/Socket.html#method-i-ipv6_multicast_loop-3F">#ipv6_multicast_loop?</a>
218
+ &mdash;
219
+ <span class="container">Ionian::Extension::Socket</span>
220
+
221
+ <li class="method">
222
+ <a href="Ionian/Extension/Socket.html#method-i-multicast">#multicast</a>
223
+ &mdash;
224
+ <span class="container">Ionian::Extension::Socket</span>
225
+
226
+ <li class="method">
227
+ <a href="Ionian/Extension/Socket.html#method-i-multicast-3F">#multicast?</a>
228
+ &mdash;
229
+ <span class="container">Ionian::Extension::Socket</span>
230
+
116
231
  <li class="method">
117
232
  <a href="Ionian/Extension/Socket.html#method-i-no_delay">#no_delay</a>
118
233
  &mdash;
@@ -123,6 +238,11 @@
123
238
  &mdash;
124
239
  <span class="container">Ionian::Extension::Socket</span>
125
240
 
241
+ <li class="method">
242
+ <a href="Ionian/Extension/Socket.html#method-i-no_delay-3F">#no_delay?</a>
243
+ &mdash;
244
+ <span class="container">Ionian::Extension::Socket</span>
245
+
126
246
  <li class="method">
127
247
  <a href="Ionian/Extension/IO.html#method-i-on_match">#on_match</a>
128
248
  &mdash;
@@ -153,16 +273,51 @@
153
273
  &mdash;
154
274
  <span class="container">Ionian::Extension::IO</span>
155
275
 
276
+ <li class="method">
277
+ <a href="Ionian/Extension/Socket.html#method-i-recork">#recork</a>
278
+ &mdash;
279
+ <span class="container">Ionian::Extension::Socket</span>
280
+
156
281
  <li class="method">
157
282
  <a href="Ionian/Extension/IO.html#method-i-register_observer">#register_observer</a>
158
283
  &mdash;
159
284
  <span class="container">Ionian::Extension::IO</span>
160
285
 
286
+ <li class="method">
287
+ <a href="Ionian/Extension/Socket.html#method-i-reuse_addr">#reuse_addr</a>
288
+ &mdash;
289
+ <span class="container">Ionian::Extension::Socket</span>
290
+
291
+ <li class="method">
292
+ <a href="Ionian/Extension/Socket.html#method-i-reuse_addr-3D">#reuse_addr=</a>
293
+ &mdash;
294
+ <span class="container">Ionian::Extension::Socket</span>
295
+
296
+ <li class="method">
297
+ <a href="Ionian/Extension/Socket.html#method-i-reuse_addr-3F">#reuse_addr?</a>
298
+ &mdash;
299
+ <span class="container">Ionian::Extension::Socket</span>
300
+
161
301
  <li class="method">
162
302
  <a href="Ionian/Extension/IO.html#method-i-run_match">#run_match</a>
163
303
  &mdash;
164
304
  <span class="container">Ionian::Extension::IO</span>
165
305
 
306
+ <li class="method">
307
+ <a href="Ionian/Extension/Socket.html#method-i-ttl">#ttl</a>
308
+ &mdash;
309
+ <span class="container">Ionian::Extension::Socket</span>
310
+
311
+ <li class="method">
312
+ <a href="Ionian/Extension/Socket.html#method-i-ttl-3D">#ttl=</a>
313
+ &mdash;
314
+ <span class="container">Ionian::Extension::Socket</span>
315
+
316
+ <li class="method">
317
+ <a href="Ionian/Extension/Socket.html#method-i-ttl-3F">#ttl?</a>
318
+ &mdash;
319
+ <span class="container">Ionian::Extension::Socket</span>
320
+
166
321
  <li class="method">
167
322
  <a href="Ionian/Extension/IO.html#method-i-unregister_observer">#unregister_observer</a>
168
323
  &mdash;
@@ -21,7 +21,7 @@ module Ionian
21
21
  def initialize_ionian
22
22
  @ionian_listeners = []
23
23
  @ionian_buf = ''
24
- @ionian_expression = /(.*?)\n/
24
+ @ionian_expression = /(.*?)\r?\n?/
25
25
  @ionian_timeout = nil
26
26
  @ionian_skip_select = false
27
27
  @ionian_build_methods = true