doc/Ionian/Server.html in ionian-0.6.0 vs doc/Ionian/Server.html in ionian-0.6.1
- old
+ new
@@ -132,17 +132,27 @@
</div>
<div class="method-description">
+ <p>A convenient wrapper for TCP and Unix server sockets (UDP doesn't use a
+server).</p>
+
+<p>Accepts an optional block that is passed to <a
+href="Server.html#method-i-register_accept_listener">register_accept_listener</a>.</p>
+
+<p>Args:</p>
+
+<pre>interface: The address of the network interface to bind to.
+ Defaults to all.
+protocol: :tcp, :unix. Default is :tcp.</pre>
-
<div class="method-source-code" id="new-source">
- <pre><span class="ruby-comment"># File lib/ionian/server.rb, line 9</span>
+ <pre><span class="ruby-comment"># File lib/ionian/server.rb, line 18</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span> <span class="ruby-operator">**</span><span class="ruby-identifier">kwargs</span>, <span class="ruby-operator">&</span><span class="ruby-identifier">block</span>
<span class="ruby-ivar">@accept_listeners</span> = []
<span class="ruby-identifier">register_accept_listener</span> <span class="ruby-operator">&</span><span class="ruby-identifier">block</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span>
<span class="ruby-ivar">@interface</span> = <span class="ruby-identifier">kwargs</span>.<span class="ruby-identifier">fetch</span> <span class="ruby-value">:interface</span>, <span class="ruby-string">''</span>
@@ -161,11 +171,11 @@
<span class="ruby-keyword">case</span> <span class="ruby-ivar">@protocol</span>
<span class="ruby-keyword">when</span> <span class="ruby-value">:tcp</span>
<span class="ruby-ivar">@server</span> = <span class="ruby-constant">TCPServer</span>.<span class="ruby-identifier">new</span> <span class="ruby-ivar">@interface</span>, <span class="ruby-ivar">@port</span>
<span class="ruby-ivar">@server</span>.<span class="ruby-identifier">setsockopt</span> <span class="ruby-operator">::</span><span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-constant">SOL_SOCKET</span>, <span class="ruby-operator">::</span><span class="ruby-constant">Socket</span><span class="ruby-operator">::</span><span class="ruby-constant">SO_REUSEADDR</span>, [<span class="ruby-value">1</span>].<span class="ruby-identifier">pack</span>(<span class="ruby-string">'i'</span>)
<span class="ruby-keyword">when</span> <span class="ruby-value">:udp</span>
- <span class="ruby-ivar">@server</span> = <span class="ruby-constant">Ionian</span><span class="ruby-operator">::</span><span class="ruby-constant">Socket</span>.<span class="ruby-identifier">new</span> <span class="ruby-identifier">host</span><span class="ruby-operator">:</span> <span class="ruby-ivar">@interface</span>, <span class="ruby-identifier">port</span><span class="ruby-operator">:</span> <span class="ruby-ivar">@port</span>, <span class="ruby-identifier">protocol</span><span class="ruby-operator">:</span> <span class="ruby-value">:udp</span>
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>, <span class="ruby-string">"UDP should be implemented with Ionian::Socket."</span>
<span class="ruby-keyword">when</span> <span class="ruby-value">:unix</span>
<span class="ruby-ivar">@server</span> = <span class="ruby-constant">UNIXServer</span>.<span class="ruby-identifier">new</span> <span class="ruby-ivar">@interface</span>
<span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
</div>
@@ -203,11 +213,11 @@
<div class="method-source-code" id="close-source">
- <pre><span class="ruby-comment"># File lib/ionian/server.rb, line 62</span>
+ <pre><span class="ruby-comment"># File lib/ionian/server.rb, line 71</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">close</span>
<span class="ruby-ivar">@server</span>.<span class="ruby-identifier">close</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@server</span>
<span class="ruby-ivar">@accept_thread</span>.<span class="ruby-identifier">join</span> <span class="ruby-keyword">if</span> <span class="ruby-ivar">@accept_thread</span>
<span class="ruby-ivar">@accept_thread</span> = <span class="ruby-keyword">nil</span>
<span class="ruby-keyword">end</span></pre>
@@ -241,11 +251,11 @@
<div class="method-source-code" id="listen-source">
- <pre><span class="ruby-comment"># File lib/ionian/server.rb, line 40</span>
+ <pre><span class="ruby-comment"># File lib/ionian/server.rb, line 49</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">listen</span> <span class="ruby-operator">&</span><span class="ruby-identifier">block</span>
<span class="ruby-identifier">register_accept_listener</span> <span class="ruby-operator">&</span><span class="ruby-identifier">block</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">block_given?</span>
<span class="ruby-ivar">@accept_thread</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">Thread</span>.<span class="ruby-identifier">new</span> <span class="ruby-keyword">do</span>
<span class="ruby-comment"># Package in an Ionian::Socket</span>
@@ -320,11 +330,11 @@
<div class="method-source-code" id="register_accept_listener-source">
- <pre><span class="ruby-comment"># File lib/ionian/server.rb, line 70</span>
+ <pre><span class="ruby-comment"># File lib/ionian/server.rb, line 79</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">register_accept_listener</span> <span class="ruby-operator">&</span><span class="ruby-identifier">block</span>
<span class="ruby-ivar">@accept_listeners</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">block</span> <span class="ruby-keyword">unless</span> <span class="ruby-ivar">@accept_listeners</span>.<span class="ruby-identifier">include?</span> <span class="ruby-identifier">block</span>
<span class="ruby-identifier">block</span>
<span class="ruby-keyword">end</span></pre>
</div>
@@ -358,10 +368,10 @@
<div class="method-source-code" id="unregister_accept_listener-source">
- <pre><span class="ruby-comment"># File lib/ionian/server.rb, line 78</span>
+ <pre><span class="ruby-comment"># File lib/ionian/server.rb, line 87</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier">unregister_accept_listener</span> <span class="ruby-identifier">proc</span>
<span class="ruby-ivar">@accept_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">proc</span>}
<span class="ruby-identifier">proc</span>
<span class="ruby-keyword">end</span></pre>
</div>