class Dizby::BasicServer

Attributes

exported_uri[R]
front[R]
shutdown_pipe[RW]
stream[RW]
uri[R]

Public Class Methods

new(args, stream) click to toggle source
Calls superclass method Dizby::AbstractServer::new
# File lib/dizby/server/basic.rb, line 15
def initialize(args, stream)
  super(args.config) { |msg| "#{args.uri} : #{msg}" }

  @uri = args.uri
  @front = args.front
  @stream = stream

  @exported_uri = Dizby.monitor([@uri])

  @shutdown_pipe = SelfPipe.new(*IO.pipe)
end

Public Instance Methods

accept() click to toggle source
# File lib/dizby/server/basic.rb, line 42
def accept
  readables, = IO.select([stream, shutdown_pipe.read])
  raise LocalServerShutdown if readables.include? shutdown_pipe.read
  log.debug('Accepting connection')
  stream.accept
end
add_uri_alias(uri) click to toggle source
# File lib/dizby/server/basic.rb, line 76
def add_uri_alias(uri)
  log.debug("Adding uri alias: #{uri}")

  exported_uri.synchronize do
    exported_uri << uri unless exported_uri.include?(uri)
  end
end
alive?() click to toggle source
# File lib/dizby/server/basic.rb, line 49
def alive?
  return false unless stream
  return true if stream.ready?

  shutdown
  false
end
close() click to toggle source
# File lib/dizby/server/basic.rb, line 27
def close
  log.debug('Closing')
  if stream
    stream.close
    self.stream = nil
  end

  close_shutdown_pipe
end
here?(uri) click to toggle source
# File lib/dizby/server/basic.rb, line 84
def here?(uri)
  exported_uri.synchronize { exported_uri.include?(uri) }
end
shutdown() click to toggle source
# File lib/dizby/server/basic.rb, line 37
def shutdown
  log.debug('Shutting down')
  shutdown_pipe.close_write if shutdown_pipe
end
to_id(obj) click to toggle source
# File lib/dizby/server/basic.rb, line 68
def to_id(obj)
  return nil if obj.__id__ == front.__id__
  idconv.to_id(obj)
end
to_obj(ref) click to toggle source
# File lib/dizby/server/basic.rb, line 57
def to_obj(ref)
  case ref
  when nil
    front
  when QueryRef
    front[ref.to_s]
  else
    idconv.to_obj(ref)
  end
end

Private Instance Methods

close_shutdown_pipe() click to toggle source
# File lib/dizby/server/basic.rb, line 94
def close_shutdown_pipe
  return nil unless shutdown_pipe

  log.debug('Closing shutdown pipe')
  shutdown_pipe.close_read
  shutdown_pipe.close_write
  self.shutdown_pipe = nil
end