コード例 #1
0
ファイル: DoormanProxy.php プロジェクト: asyncphp/assistant
 /**
  * @param Manager $manager
  * @param Server  $server
  */
 public function __construct(Manager $manager, Server $server)
 {
     if ($manager instanceof ProcessManager) {
         $manager->setWorker(realpath(__DIR__ . "/../../bin/worker.php"));
     }
     if (!$manager instanceof GroupProcessManager) {
         $manager = new GroupProcessManager($manager);
     }
     $this->manager = $manager;
     $this->server = $server;
 }
コード例 #2
0
 /**
  * @inheritdoc
  *
  * @param array $config
  *
  * @return PromiseInterface
  *
  * @throws InvalidArgumentException
  */
 public function connect(array $config)
 {
     $config = $this->validate($config);
     $this->remit($config);
     $this->manager = new ProcessManager();
     if (isset($config["log"])) {
         $this->manager->setLogPath($config["log"]);
     }
     $this->manager->addTask(new DoormanConnectorTask($config));
     $this->manager->tick();
 }
コード例 #3
0
ファイル: GroupProcessManager.php プロジェクト: rkrx/doorman
 /**
  * @inheritdoc
  *
  * @return bool
  */
 public function tick()
 {
     if (!empty($this->queuing)) {
         $this->manager->addTask(array_shift($this->queuing));
     }
     if ($this->manager->tick()) {
         return true;
     }
     if (empty($this->waiting)) {
         return false;
     }
     $this->queuing = array_shift($this->waiting);
     return true;
 }