class Qwik::Server

Attributes

memory[R]

Public Class Methods

new(qconfig) click to toggle source
Calls superclass method
# File vendor/qwik/lib/qwik/server.rb, line 25
def initialize(qconfig)
  @qconfig = qconfig
  @memory  = ServerMemory.new(@qconfig)

  # init_trap
  trap(:TERM) { shutdown; }
  trap(:INT)  { shutdown; }
  if Signal.list.key?("HUP")
    trap(:HUP)  { reopen; }
  end

  init_directory(@qconfig)

  webrick_conf, @pidfile = init_webrick_conf(@qconfig, @memory)

  init_bury_logger

  super(webrick_conf)

  mount('/', Servlet)       # Delegate all accesses.
end
server_name() click to toggle source
# File vendor/qwik/lib/qwik/server.rb, line 160
def self.server_name
  return "qwikWeb/#{VERSION}+#{RELEASE_DATE}"
end
version() click to toggle source
# File vendor/qwik/lib/qwik/server.rb, line 156
def self.version
  return VERSION
end

Public Instance Methods

init_bury_logger() click to toggle source
# File vendor/qwik/lib/qwik/server.rb, line 148
def init_bury_logger
  log_file = (@qconfig.log_dir.path + "bury.log").to_s
  # '::Logger' means standard library class.
  log = ::Logger.new(log_file, 'monthly')
  log.level = ::Logger::INFO
  @memory[:bury_log] = log
end
init_directory(config) click to toggle source
# File vendor/qwik/lib/qwik/server.rb, line 48
def init_directory(config)
  config.cache_dir.path.check_directory
  config.sites_dir.path.check_directory
  (config.sites_dir.path+config.default_sitename).check_directory
  config.etc_dir.path.check_directory
  config.grave_dir.path.check_directory
  config.log_dir.path.check_directory
end
init_webrick_conf(config, memory) click to toggle source
# File vendor/qwik/lib/qwik/server.rb, line 57
def init_webrick_conf(config, memory)
  # qwik-error.log
  web_error_log = (config.log_dir.path + Logger::WEB_ERROR_LOG).to_s
  pidfile = config.web_pid_file     # qwikweb.pid
  servertype = WEBrick::Daemon
  if config.debug
    pidfile += '-d'
    servertype = WEBrick::SimpleServer
    web_error_log = $stdout
    web_error_log = 'qwik-error.log' if config.test
  end

  # qwik-access.log
  log = config.log_dir.path + Logger::WEB_ACCESS_LOG
  logger = Qwik::Logger.new(log.to_s)
  logger.verbose = true if config.debug && ! config.test
  memory[:qwik_access_log] = logger

  web_error_logger = WEBrick::Log.new(web_error_log, WEBrick::Log::INFO)
  memory[:logger] = web_error_logger

  access_log_file = (config.log_dir.path + Logger::ACCESS_LOG).to_s
  accesslog_logger =
    [[WEBrick::BasicLog.new(access_log_file, WEBrick::Log::INFO),
      WEBrick::AccessLog::COMBINED_LOG_FORMAT]]

  server = Server.server_name
  #server = "Apache/2.0.54 (Unix) #{server}"        # Imitate Apache server

  webrick_config = {
    :HostnameLookups => false,
    :BindAddress   => config.bind_address,
    :Port          => config.web_port.to_i,
    :Logger                => web_error_logger,
    :ServerType    => servertype,
    :StartCallback => Proc.new { start_server; },
    :StopCallback  => Proc.new { stop_server; },
    :AccessLog     => accesslog_logger,
    :ServerSoftware        => server,
    :QwikConfig    => config,
    :QwikMemory    => memory,
   #:MaxClients     => 100,
   #:WEBrickThread  => false, # test
  }

  return webrick_config, pidfile
end
reopen() click to toggle source
# File vendor/qwik/lib/qwik/server.rb, line 134
def reopen
  # qwik-access.log is an instance of Qwik::Logger
  logger = @memory[:qwik_access_log]
  logger.reopen

  # qwik-error.log is an instance of WEBrick::Log
  logger = @memory[:logger]
  logger.reopen

  # access.log is an instance of WEBrick::BasicLog
  webrick_accesslog = @config[:AccessLog][0][0]
  webrick_accesslog.reopen
end
start_server() click to toggle source

callback from :StartCallback

# File vendor/qwik/lib/qwik/server.rb, line 106
def start_server
  write_pid_file(@pidfile)

  threads = []
  threads <<            SweepThread.new(@qconfig, @memory)
  threads << WeeklySendReportThread.new(@memory)
  threads <<  DailySendReportThread.new(@memory)
  threads << HourlySendReportThread.new(@memory)
  @memory[:threads] = threads
  threads.each {|th|
    t = Thread.new {
      th.start
    }
    t.abort_on_exception = true
  }

  #qp @qconfig.debug
  if @qconfig.debug
    require 'qwik/autoreload'
    AutoReload.start(1, true, 'Web')       # auto reload every sec.
  end
end
stop_server() click to toggle source

callback from :StopCallback

# File vendor/qwik/lib/qwik/server.rb, line 130
def stop_server
  remove_pid_file(@pidfile)
end