1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
require 'socket'
module Celluloid
module IO
# UNIXServer with combined blocking and evented support
class UNIXServer
extend Forwardable
def_delegators :@server, :listen, :sysaccept, :close, :closed?
def self.open(socket_path)
self.new(socket_path)
end
def initialize(socket_path)
@server = ::UNIXServer.new(socket_path)
end
def accept
Celluloid::IO.wait_readable(@server)
accept_nonblock
end
def accept_nonblock
Celluloid::IO::UNIXSocket.new(@server.accept_nonblock)
end
def to_io
@server
end
end
end
end
|