class Dizby::UnixProtocol::Server

Public Class Methods

new(args, filename) click to toggle source
Calls superclass method
# File lib/dizby/protocols/unix.rb, line 48
def initialize(args, filename)
  unless filename
    temp = Tempfile.new(%w(dizby-unix .socket))
    filename = temp.path
    temp.close!
  end

  socket = UNIXServer.open(filename)
  UnixProtocol.apply_sockopt(socket)

  args.uri = "drbunix:#{filename}"
  super(args, socket)

  self.class.set_permissions(filename, args.config)
end

Private Class Methods

set_permissions(filename, config) click to toggle source
# File lib/dizby/protocols/unix.rb, line 84
def self.set_permissions(filename, config)
  owner = config[:unix_owner]
  group = config[:unix_group]
  mode = config[:unix_mode]

  if owner || group
    require 'etc'
    owner = Etc.getpwnam(owner).uid if owner
    group = Etc.getgrnam(group).gid if group
    File.chown(owner, group, filename)
  end

  File.chmod(mode, filename) if mode
end

Public Instance Methods

accept() click to toggle source
Calls superclass method
# File lib/dizby/protocols/unix.rb, line 77
def accept
  socket = super

  UnixProtocol.apply_sockopt(socket)
  BasicConnection.new(self, socket)
end
close() click to toggle source
# File lib/dizby/protocols/unix.rb, line 64
def close
  if stream
    path = stream.path
    stream.close
    self.stream = nil

    log.debug("unlinking #{path}")
    File.unlink(path)
  end

  close_shutdown_pipe
end