object $sys: $root;

var $root inited = 1;
var $sys core_name = "Cold Turkey";
var $sys core_version = "0.0";
var $sys startup = #[['objects, [$login_daemon, $http_daemon]]];

public method .server_info() {
  arg what, @long;
  var tmp;
    
  switch (what) {
    case 'up_time:
      return time() - (startup['time]);
    case 'startup_time:
      return startup['time];
//    case 'server_hostname:
//      return $dns.hostname("");
//    case 'server_ip:
//      return $dns.ip("");
//    case 'last_backup:
//      return backup['last];
    case 'driver_version:
      tmp = .version();
      return (((((((long ? "Cold Genesis/" : "") + (tmp[1])) + ".") + (tmp
[2])) + "p") + (tmp[3])) + "-") + ((listlen(tmp) == 3) ? "NEED TO UPGRADE" : (tmp[4]));
    case 'core_name:
      return core_name;
    case 'core_version:
      return core_version;
    case 'core_version_str:
      return core_name + "/" + core_version;
    default:
      throw(~unknown, "Unknown flag.");
  }
};

driver method .signal() {
    arg [args];
    
};

driver method .startup() {
    arg args;
    var obj, hmm, l;

    set_heartbeat(0);

    startup = startup.add('time, time());
    
    for obj in (startup['objects]) {
        catch any {
            dblog(("Calling " + (obj.objname())) + ".startup()");
            (> obj.startup(@args) <);
        } with {
            dblog("" + traceback());
            catch any {
                for l in ($parse_lib.traceback(traceback()))
                    dblog(l);
            } with {
                dblog("" + traceback());
            }
        }
    }
    set_heartbeat(5);
};