class Dizby::TCProtocol::Server
Attributes
port[R]
Public Class Methods
new(args, host, port)
click to toggle source
Calls superclass method
# File lib/dizby/protocols/tcp.rb, line 57 def initialize(args, host, port) port ||= 0 if host.empty? host = TCProtocol.getservername socket = self.class.open_socket_inaddr_any(host, port) else socket = TCPServer.open(host, port) end port = socket.addr[1] if port.zero? args.uri = "drb://#{host}:#{port}" super(args, socket) TCProtocol.apply_sockopt(socket) @port = port end
open_socket_inaddr_any(host, port)
click to toggle source
# File lib/dizby/protocols/tcp.rb, line 94 def self.open_socket_inaddr_any(host, port) infos = Socket.getaddrinfo( host, nil, Socket::AF_UNSPEC, Socket::SOCK_STREAM, 0, Socket::AI_PASSIVE ) families = Hash[*infos.map { |af, *_| af }.uniq.zip([]).flatten] return TCPServer.open('0.0.0.0', port) if families.key?('AF_INET') return TCPServer.open('::', port) if families.key?('AF_INET6') TCPServer.open(port) end
Public Instance Methods
accept()
click to toggle source
Calls superclass method
# File lib/dizby/protocols/tcp.rb, line 79 def accept socket = nil loop do socket = super break if !tcp_acl || tcp_acl.allow_socket?(socket) # TODO: not tested socket.close end TCProtocol.apply_sockopt(socket) BasicConnection.new(self, socket) end