class Thin::Backends::UnixServer
Backend to act as a UNIX domain socket server.
Attributes
socket[RW]
UNIX domain socket on which the server is listening for connections.
Public Class Methods
new(socket)
click to toggle source
Calls superclass method
Thin::Backends::Base.new
# File lib/thin/backends/unix_server.rb, line 8 def initialize(socket) raise PlatformNotSupported, 'UNIX domain sockets not available on Windows' if Thin.win? @socket = socket super() end
Public Instance Methods
close()
click to toggle source
Free up resources used by the backend.
# File lib/thin/backends/unix_server.rb, line 34 def close remove_socket_file end
connect()
click to toggle source
Connect the server
# File lib/thin/backends/unix_server.rb, line 15 def connect at_exit { remove_socket_file } # In case it crashes old_umask = File.umask(0) begin EventMachine.start_unix_domain_server(@socket, UnixConnection, &method(:initialize_connection)) # HACK EventMachine.start_unix_domain_server doesn't return the connection signature # so we have to go in the internal stuff to find it. @signature = EventMachine.instance_eval{@acceptors.keys.first} ensure File.umask(old_umask) end end
disconnect()
click to toggle source
Stops the server
# File lib/thin/backends/unix_server.rb, line 29 def disconnect EventMachine.stop_server(@signature) end
to_s()
click to toggle source
# File lib/thin/backends/unix_server.rb, line 38 def to_s @socket end
Protected Instance Methods
remove_socket_file()
click to toggle source
# File lib/thin/backends/unix_server.rb, line 43 def remove_socket_file File.delete(@socket) if @socket && File.exist?(@socket) end