class MyStuff::Fb303::Server

Attributes

logger[W]
logger[W]

Public Class Methods

logger() click to toggle source
# File lib/my_stuff/fb303/server.rb, line 82
def logger
  return @logger if @logger
  begin
    @logger = MyStuff::Logger.new
  rescue NameError
    require 'logger'
    @logger = ::Logger.new(STDOUT)
  end
end
new(interface, name, version = '') click to toggle source
# File lib/my_stuff/fb303/server.rb, line 9
def initialize interface, name, version = ''
  @name      = name
  @version   = version
  @interface = interface

  @status         = Fb_status::STARTING
  @status_details = ''
  @started_at     = Time.new.to_i
  @counters       = Hash.new(0)

  logger.info 'Starting fb303 service...'
  start_fb303_server
  logger.info 'fb303 service running.'
  logger.info 'Loading handler...'
  handler
  logger.info 'Handler loaded.'
end

Public Instance Methods

aliveSince() click to toggle source
# File lib/my_stuff/fb303/server.rb, line 39
def aliveSince; @started_at; end
getCounter(key;) click to toggle source
# File lib/my_stuff/fb303/server.rb, line 41
def getCounter key; @counters[key]; end
getCounters() click to toggle source
# File lib/my_stuff/fb303/server.rb, line 40
def getCounters; @counters; end
getCpuProfile(duration;) click to toggle source
# File lib/my_stuff/fb303/server.rb, line 44
def getCpuProfile duration; ''; end
getName() click to toggle source

fb303 implementation #####

# File lib/my_stuff/fb303/server.rb, line 35
def getName; @name; end
getOption(key;) click to toggle source
# File lib/my_stuff/fb303/server.rb, line 42
def getOption key; ''; end
getOptions() click to toggle source
# File lib/my_stuff/fb303/server.rb, line 43
def getOptions; {}; end
getStatus() click to toggle source
# File lib/my_stuff/fb303/server.rb, line 37
def getStatus; @status; end
getStatusDetails() click to toggle source
# File lib/my_stuff/fb303/server.rb, line 38
def getStatusDetails; @status_details; end
getVersion() click to toggle source
# File lib/my_stuff/fb303/server.rb, line 36
def getVersion; @version; end
handler() click to toggle source
# File lib/my_stuff/fb303/server.rb, line 71
def handler
  self
end
increment_counter(name) click to toggle source
# File lib/my_stuff/fb303/server.rb, line 55
def increment_counter name
  @counters[name] += 1
end
logger() click to toggle source
# File lib/my_stuff/fb303/server.rb, line 76
def logger
  @logger || self.class.logger
end
method_missing(*args) click to toggle source
Calls superclass method
# File lib/my_stuff/fb303/server.rb, line 59
def method_missing *args
  unless self.getStatus == Fb_status::ALIVE
    raise 'Handler unavailable in current status.'
  end

  if self.handler != self
      self.handler.send *args
  else
    super *args
  end
end
reinitialize() click to toggle source
# File lib/my_stuff/fb303/server.rb, line 46
def reinitialize; raise NotImplementedError.new; end
run!() click to toggle source
# File lib/my_stuff/fb303/server.rb, line 27
def run!
  @status  = Fb_status::ALIVE
  logger.info 'Alive, waiting on server thread.'
  @server_thread.join
end
setOption(key, value;) click to toggle source
# File lib/my_stuff/fb303/server.rb, line 45
def setOption key, value; end
shutdown() click to toggle source
# File lib/my_stuff/fb303/server.rb, line 48
def shutdown
  @status = Fb_status::STOPPING
  @status_details = 'Shutdown requested via fb303'
  @fb303_thread.kill if @fb303_thread
  @status = Fb_status::STOPPED
end

Protected Instance Methods

server_for(processor) click to toggle source
# File lib/my_stuff/fb303/server.rb, line 95
def server_for processor
  raise NotImplementedError.new
end
start_fb303_server() click to toggle source
# File lib/my_stuff/fb303/server.rb, line 99
def start_fb303_server
  handler   = MyStuff::Fb303::ProxyHandler.new(self)
  processor = @interface.const_get(:Processor).new(handler)
  @server   = server_for(processor)

  @server_thread = Thread.new do
    @server.serve
  end
end