Sha256: 88586a378fccdd0e78291bb3baa959599a9e10fd5fd2e99019feb390b3cc2b1c
Contents?: true
Size: 928 Bytes
Versions: 5
Compression:
Stored size: 928 Bytes
Contents
require 'socket' module Celluloid module IO # TCPServer with combined blocking and evented support class TCPServer extend Forwardable def_delegators :@server, :listen, :sysaccept, :close, :closed? def initialize(hostname, port) @server = ::TCPServer.new(hostname, port) end def accept actor = Thread.current[:actor] if evented? Celluloid.current_actor.wait_readable @server accept_nonblock else Celluloid::IO::TCPSocket.from_ruby_socket @server.accept end end def accept_nonblock Celluloid::IO::TCPSocket.from_ruby_socket @server.accept_nonblock end def to_io @server end # Are we inside a Celluloid ::IO actor? def evented? actor = Thread.current[:actor] actor && actor.mailbox.is_a?(Celluloid::IO::Mailbox) end end end end
Version data entries
5 entries across 5 versions & 1 rubygems