Class: Skynet::TuplespaceServer

Inherits:
Object
  • Object
show all
Defined in:
lib/skynet/skynet_tuplespace_server.rb

Class Method Summary collapse

Class Method Details

.start(options) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/skynet/skynet_tuplespace_server.rb', line 54

def self.start(options)
  options[:port] ||= 7647
  log = Logger.new(options[:logfile])
  log.level = Object.module_eval("#{"Logger::" + options[:loglevel].upcase}", __FILE__, __LINE__) if options[:loglevel]
  log.info "STARTING TUPLESPACE SERVER ON PORT: #{options[:port]} Logging to #{options[:logfile]}"

  # Create a TupleSpace to hold named services, and start running
  ts = Rinda::TupleSpace.new
  begin
    if options[:use_ringserver] and options[:port]
      DRb.start_service
      tuple = [:name,:TupleSpace, ts, 'Tuple Space']
      renewer = Rinda::SimpleRenewer.new
      ring_ts = Rinda::TupleSpace.new
      ring_ts.write(tuple, renewer)

      server = Rinda::RingServer.new(ring_ts, options[:port])
    end
    if options[:drburi]
      DRb.start_service(options[:drburi], ts)          
    end
    DRb.thread.join
  rescue SystemExit, Interrupt
  rescue Exception, RuntimeError => e
    log.fatal "Couldn't start Skynet Server #{e.inspect}"
  end

end