本文整理汇总了PHP中Success::when方法的典型用法代码示例。如果您正苦于以下问题:PHP Success::when方法的具体用法?PHP Success::when怎么用?PHP Success::when使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Success
的用法示例。
在下文中一共展示了Success::when方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: update
public function update(Server $server) : Promise
{
switch ($this->state = $server->state()) {
case Server::STARTING:
$result = $this->application->onStart($this->proxy);
if ($result instanceof \Generator) {
return resolve($result);
}
break;
case Server::STARTED:
$f = (new \ReflectionClass($this))->getMethod("timeout")->getClosure($this);
$this->timeoutWatcher = \Amp\repeat($f, 1000);
break;
case Server::STOPPING:
$result = $this->application->onStop();
if ($result instanceof \Generator) {
$promise = resolve($result);
} elseif ($result instanceof Promise) {
$promise = $result;
} else {
$promise = new Success();
}
$promise->when(function () {
$code = Code::GOING_AWAY;
$reason = "Server shutting down!";
foreach ($this->clients as $client) {
$this->close($client->id, $code, $reason);
}
});
\Amp\cancel($this->timeoutWatcher);
$this->timeoutWatcher = null;
return $promise;
case Server::STOPPED:
$promises = [];
// we are not going to wait for a proper self::OP_CLOSE answer (because else we'd need to timeout for 3 seconds, not worth it), but we will ensure to at least *have written* it
foreach ($this->clients as $client) {
// only if we couldn't successfully send it in STOPPING
$code = Code::GOING_AWAY;
$reason = "Server shutting down!";
$result = $this->doClose($client, $code, $reason);
if ($result instanceof \Generator) {
$promise[] = resolve($result);
}
if (!empty($client->writeDeferredControlQueue)) {
$promise = end($client->writeDeferredControlQueue)->promise();
if ($promise) {
$promises[] = $promise;
}
}
}
$promise = any($promises);
$promise->when(function () {
foreach ($this->clients as $client) {
$this->unloadClient($client);
}
});
return $promise;
}
return new Success();
}