diff options
-rw-r--r-- | lib/yahns/server.rb | 7 | ||||
-rw-r--r-- | lib/yahns/socket_helper.rb | 12 | ||||
-rw-r--r-- | lib/yahns/tcp_server.rb | 7 | ||||
-rw-r--r-- | lib/yahns/unix_server.rb | 7 |
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 |