class Object
Public Instance Methods
close!()
click to toggle source
We're done here, clean up!
@todo
Not sure how correct this is... fucking threading. *Seems* to work...
@return [nil]
# File lib/qb/ipc/stdio/server/service.rb, line 194 def close! logger.debug "Closing...", socket: socket, server: server, path_exists: path.exist?, thread: thread, env_var: { env_var_name => ENV[env_var_name], } # Remove the path from the ENV so if we do anything after this the # old one isn't hanging around ENV.delete env_var_name # Kill the thread first so that it can't try to do anything else thread.kill if thread && thread.alive? socket.close unless socket.nil? @socket = nil server.close unless server.nil? @server = nil FileUtils.rm( path ) if path.exist? logger.debug "Closed.", socket: socket, server: server, path_exists: path.exist?, thread: thread, env_var: { env_var_name => ENV[env_var_name], } nil end
open!()
click to toggle source
# File lib/qb/ipc/stdio/server/service.rb, line 156 def open! logger.debug "Opening..." # make sure env var is not already set (basically just prevents you from # accidentally opening two instances with the same name) if ENV.key? env_var_name raise "env already contains key #{ env_var_name }" \ "with value #{ ENV[env_var_name] }" end @thread = Thread.new do Thread.current.name = name logger.trace "thread started." @server = UNIXServer.new path.to_s while true do @socket = server.accept work_in_thread end end # set the env key so children can find the socket path ENV[env_var_name] = path.to_s logger.debug "Set env var", env_var_name => ENV[env_var_name] logger.debug "Service open." end