lib/celluloid/io/unix_socket.rb in celluloid-io-0.13.0.pre vs lib/celluloid/io/unix_socket.rb in celluloid-io-0.13.0.pre2

- old
+ new

@@ -1,30 +1,35 @@ require 'socket' module Celluloid module IO # UNIXSocket with combined blocking and evented support - class UNIXSocket - include CommonMethods + class UNIXSocket < Stream extend Forwardable def_delegators :@socket, :read_nonblock, :write_nonblock, :close, :closed?, :readline, :puts, :addr - # Convert a Ruby UNIXSocket into a Celluloid::IO::UNIXSocket - def self.from_ruby_socket(ruby_socket) - # Some hax here, but whatever ;) - socket = allocate - socket.instance_variable_set(:@socket, ruby_socket) - socket - end - # Open a UNIX connection. def self.open(socket_path, &block) self.new(socket_path, &block) end + # Convert a Ruby UNIXSocket into a Celluloid::IO::UNIXSocket + # DEPRECATED: to be removed in a future release + def self.from_ruby_socket(ruby_socket) + new(ruby_socket) + end + # Open a UNIX connection. def initialize(socket_path, &block) + super() + + # Allow users to pass in a Ruby UNIXSocket directly + if socket_path.is_a? ::UNIXSocket + @socket = socket_path + return + end + # FIXME: not doing non-blocking connect @socket = if block ::UNIXSocket.open(socket_path, &block) else ::UNIXSocket.new(socket_path)