Beispiel #1
0
 /**
  * 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;
     }
 }
Beispiel #2
0
 /**
  * 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;
     }
 }