about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/yahns/server.rb7
-rw-r--r--lib/yahns/socket_helper.rb12
-rw-r--r--lib/yahns/tcp_server.rb7
-rw-r--r--lib/yahns/unix_server.rb7
4 files changed, 24 insertions, 9 deletions
diff --git a/lib/yahns/server.rb b/lib/yahns/server.rb
index 8490c5a..9a72ef5 100644
--- a/lib/yahns/server.rb
+++ b/lib/yahns/server.rb
@@ -2,6 +2,8 @@
 # Copyright (C) 2013, Eric Wong <normalperson@yhbt.net> and all contributors
 # License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt)
 require_relative 'queue_quitter'
+require_relative 'tcp_server'
+require_relative 'unix_server'
 
 class Yahns::Server # :nodoc:
   QUEUE_SIGS = [ :WINCH, :QUIT, :INT, :TERM, :USR1, :USR2, :HUP, :TTIN, :TTOU,
@@ -162,7 +164,7 @@ class Yahns::Server # :nodoc:
 
     begin
       io = bind_listen(address, sock_opts(address))
-      unless Kgio::TCPServer === io || Kgio::UNIXServer === io
+      unless Yahns::TCPServer === io || Yahns::UNIXServer === io
         io = server_cast(io)
       end
       @logger.info "listening on addr=#{sock_name(io)} fd=#{io.fileno}"
@@ -282,7 +284,7 @@ class Yahns::Server # :nodoc:
 
   def inherit_listeners!
     # inherit sockets from parents, they need to be plain Socket objects
-    # before they become Kgio::UNIXServer or Kgio::TCPServer
+    # before they become Yahns::UNIXServer or Yahns::TCPServer
     inherited = ENV['YAHNS_FD'].to_s.split(/,/).map do |fd|
       io = Socket.for_fd(fd.to_i)
       set_server_sockopt(io, sock_opts(io))
@@ -298,7 +300,6 @@ class Yahns::Server # :nodoc:
   def bind_new_listeners!
     self.listeners = @config.config_listeners.keys
     raise ArgumentError, "no listeners" if @listeners.empty?
-    @listeners.each { |l| l.extend(Yahns::Acceptor) }
   end
 
   def proc_name(tag)
diff --git a/lib/yahns/socket_helper.rb b/lib/yahns/socket_helper.rb
index 97d3c94..691408f 100644
--- a/lib/yahns/socket_helper.rb
+++ b/lib/yahns/socket_helper.rb
@@ -54,14 +54,14 @@ module Yahns::SocketHelper # :nodoc:
       end
       old_umask = File.umask(opt[:umask] || 0)
       begin
-        Kgio::UNIXServer.new(address)
+        Yahns::UNIXServer.new(address)
       ensure
         File.umask(old_umask)
       end
     elsif /\A\[([a-fA-F0-9:]+)\]:(\d+)\z/ =~ address
       new_ipv6_server($1, $2.to_i, opt)
     elsif /\A(\d+\.\d+\.\d+\.\d+):(\d+)\z/ =~ address
-      Kgio::TCPServer.new($1, $2.to_i)
+      Yahns::TCPServer.new($1, $2.to_i)
     else
       raise ArgumentError, "Don't know how to bind: #{address}"
     end
@@ -70,13 +70,13 @@ module Yahns::SocketHelper # :nodoc:
   end
 
   def new_ipv6_server(addr, port, opt)
-    opt.key?(:ipv6only) or return Kgio::TCPServer.new(addr, port)
+    opt.key?(:ipv6only) or return Yahns::TCPServer.new(addr, port)
     sock = Socket.new(:AF_INET6, :SOCK_STREAM, 0)
     sock.setsockopt(:IPPROTO_IPV6, :IPV6_V6ONLY, opt[:ipv6only] ? 1 : 0)
     sock.setsockopt(:SOL_SOCKET, :SO_REUSEADDR, 1)
     sock.bind(Socket.pack_sockaddr_in(port, addr))
     sock.autoclose = false
-    Kgio::TCPServer.for_fd(sock.fileno)
+    Yahns::TCPServer.for_fd(sock.fileno)
   end
 
   # returns rfc2732-style (e.g. "[::1]:666") addresses for IPv6
@@ -111,9 +111,9 @@ module Yahns::SocketHelper # :nodoc:
     sock.autoclose = false
     begin
       Socket.unpack_sockaddr_in(sock.getsockname)
-      Kgio::TCPServer.for_fd(sock.fileno)
+      Yahns::TCPServer.for_fd(sock.fileno)
     rescue ArgumentError
-      Kgio::UNIXServer.for_fd(sock.fileno)
+      Yahns::UNIXServer.for_fd(sock.fileno)
     end
   end
 end
diff --git a/lib/yahns/tcp_server.rb b/lib/yahns/tcp_server.rb
new file mode 100644
index 0000000..e650a2a
--- /dev/null
+++ b/lib/yahns/tcp_server.rb
@@ -0,0 +1,7 @@
+# -*- encoding: binary -*-
+# Copyright (C) 2013, Eric Wong <normalperson@yhbt.net> et. al.
+# License: GPLv3 or later (see COPYING for details)
+require_relative 'acceptor'
+class Yahns::TCPServer < Kgio::TCPServer
+  include Yahns::Acceptor
+end
diff --git a/lib/yahns/unix_server.rb b/lib/yahns/unix_server.rb
new file mode 100644
index 0000000..3269db3
--- /dev/null
+++ b/lib/yahns/unix_server.rb
@@ -0,0 +1,7 @@
+# -*- encoding: binary -*-
+# Copyright (C) 2013, Eric Wong <normalperson@yhbt.net> et. al.
+# License: GPLv3 or later (see COPYING for details)
+require_relative 'acceptor'
+class Yahns::UNIXServer < Kgio::UNIXServer
+  include Yahns::Acceptor
+end