/** * We overload SystemDaemon::main() in order to support our specific * commands too. */ public function main($argc, $argv) { if ($argc < 2) { fprintf(STDERR, $this->usage($this->name)); exit(1); } switch ($argv[1]) { case "install": $pid = $this->getpid(); if ($pid !== False) { $this->log->fatal("Can not install an already running daemon."); } else { $ret = $this->install(); exit($ret ? 0 : 1); } break; case "uninstall": $pid = $this->getpid(); if ($pid !== False) { $this->log->fatal("Can not uninstall a running daemon."); } else { $ret = $this->uninstall(); exit($ret ? 0 : 1); } break; case "check": $pid = $this->getpid(); if ($pid !== False) { $this->log->fatal("Daemon already running."); $this->status(); } else { $ret = $this->check(); exit($ret ? 0 : 1); } break; case "create_queue": $pid = $this->getpid(); if ($pid !== False) { $this->log->fatal("Can not create queue for an already running daemon."); } else { if ($this->connect() === False) { exit(3); } else { $ret = $this->create_queue(); $this->disconnect(); exit($ret ? 0 : 1); } } break; case "drop_queue": $pid = $this->getpid(); if ($pid !== False) { $this->log->fatal("Can not drop queue for a running daemon."); } else { if ($this->connect() === False) { exit(3); } else { $ret = $this->drop_queue(); $this->disconnect(); exit($ret ? 0 : 1); } } break; case "register": $pid = $this->getpid(); if ($pid !== False) { $this->log->fatal("Can not register already running daemon."); } else { if ($this->connect() === False) { exit(3); } else { $ret = $this->register(); $this->disconnect(); exit($ret ? 0 : 1); } } break; case "unregister": $pid = $this->getpid(); if ($pid !== False) { $this->log->fatal("Can not unregister already running daemon."); } else { $force = False; if ($argc >= 3) { $force = $argv[2] == "--force"; if ($force != True) { $this->log->fatal("unregister [--force]"); exit(1); } } if ($this->connect() === False) { exit(3); } else { if ($force) { $ret = $this->force_unregister(); } else { if ($this->check_unregister()) { $ret = $this->force_unregister(); } else { $ret = False; } } $this->disconnect(); exit($ret ? 0 : 1); } } break; case "failed": if ($this->connect() === False) { exit(3); } else { $events = $this->failed_event_list(); if ($events !== False) { foreach ($events as $event) { echo $event . "\n"; } } else { $this->log->warning("Failed event list is empty."); } $this->disconnect(); exit(0); } break; case "delete": if ($argc < 3) { $this->log->fatal("delete <event_id> [<event_id> ...]"); exit(1); } if ($this->connect() === False) { exit(3); } else { if ($argv[2] == "all") { $this->failed_event_delete_all(); } else { for ($i = 2; $i < $argc; $i++) { $this->failed_event_delete($argv[$i]); } } $this->disconnect(); exit(0); } break; case "retry": if ($argc < 3) { $this->log->fatal("delete <event_id> [<event_id> ...]"); exit(1); } if ($this->connect() === False) { exit(3); } else { if ($argv[2] == "all") { $this->failed_event_retry_all(); } else { for ($i = 2; $i < $argc; $i++) { $this->failed_event_retry($argv[$i]); } } $this->disconnect(); exit(0); } break; default: /** * Support daemon commands: start, stop, reload, restart, ... */ parent::main($argc, $argv); break; } }
/** * We overload SystemDaemon::main() in order to support our specific * commands too. */ public function main($argc, $argv) { if ($argc < 2) { fprintf(STDERR, $this->usage($this->name)); exit(1); } switch ($argv[1]) { case 'install': $pid = $this->getpid(); if ($pid !== false) { $this->log->fatal('Can not install an already running daemon.'); } else { $ret = $this->install(); exit($ret ? 0 : 1); } break; case 'uninstall': $pid = $this->getpid(); if ($pid !== false) { $this->log->fatal('Can not uninstall a running daemon.'); } else { $ret = $this->uninstall(); exit($ret ? 0 : 1); } break; case 'check': $pid = $this->getpid(); if ($pid !== false) { $this->log->fatal('Daemon already running.'); $this->status(); } else { $ret = $this->check(); exit($ret ? 0 : 1); } break; case 'create_queue': $pid = $this->getpid(); if ($pid !== false) { $this->log->fatal('Can not create queue for an already running daemon.'); } else { if ($this->connect() === false) { exit(3); } else { $ret = $this->create_queue(); $this->disconnect(); exit($ret ? 0 : 1); } } break; case 'drop_queue': $pid = $this->getpid(); if ($pid !== false) { $this->log->fatal('Can not drop queue for a running daemon.'); } else { if ($this->connect() === false) { exit(3); } else { $ret = $this->drop_queue(); $this->disconnect(); exit($ret ? 0 : 1); } } break; case 'register': $pid = $this->getpid(); if ($pid !== false) { $this->log->fatal('Can not register already running daemon.'); } else { if ($this->connect() === false) { exit(3); } else { $ret = $this->register(); $this->disconnect(); exit($ret ? 0 : 1); } } break; case 'unregister': $pid = $this->getpid(); if ($pid !== false) { $this->log->fatal('Can not unregister already running daemon.'); } else { $force = false; if ($argc >= 3) { $force = $argv[2] == '--force'; if ($force != true) { $this->log->fatal('unregister [--force]'); exit(1); } } if ($this->connect() === false) { exit(3); } else { if ($force) { $ret = $this->force_unregister(); } else { if ($this->check_unregister()) { $ret = $this->force_unregister(); } else { $ret = false; } } $this->disconnect(); exit($ret ? 0 : 1); } } break; case 'failed': if ($this->connect() === false) { exit(3); } else { $events = $this->failed_event_list(); if ($events !== false) { foreach ($events as $event) { echo $event . "\n"; } } else { $this->log->warning('Failed event list is empty.'); } $this->disconnect(); exit(0); } break; case 'delete': if ($argc < 3) { $this->log->fatal('delete <event_id> [<event_id> ...]'); exit(1); } if ($this->connect() === false) { exit(3); } else { if ($argv[2] == 'all') { $this->failed_event_delete_all(); } else { for ($i = 2; $i < $argc; ++$i) { $this->failed_event_delete($argv[$i]); } } $this->disconnect(); exit(0); } break; case 'retry': if ($argc < 3) { $this->log->fatal('delete <event_id> [<event_id> ...]'); exit(1); } if ($this->connect() === false) { exit(3); } else { if ($argv[2] == 'all') { $this->failed_event_retry_all(); } else { for ($i = 2; $i < $argc; ++$i) { $this->failed_event_retry($argv[$i]); } } $this->disconnect(); exit(0); } break; default: /* * Support daemon commands: start, stop, reload, restart, ... */ parent::main($argc, $argv); break; } }