Page MenuHomec4science

FutureProxy.php
No OneTemporary

File Metadata

Created
Sun, Dec 22, 10:28

FutureProxy.php

<?php
/*
* Copyright 2011 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* Wraps another Future and allows you to post-process its result once it
* resolves.
*
* @group futures
*/
abstract class FutureProxy extends Future {
private $proxied;
public function __construct(Future $proxied) {
$this->proxied = $proxied;
}
public function isReady() {
return $this->proxied->isReady();
}
public function resolve($timeout = null) {
$this->proxied->resolve($timeout);
return $this->getResult();
}
public function setException(Exception $ex) {
$this->proxied->setException($ex);
return $this;
}
public function getException() {
return $this->proxied->getException();
}
public function getReadSockets() {
return $this->proxied->getReadSockets();
}
public function getWriteSockets() {
return $this->proxied->getWriteSockets();
}
protected function getResult() {
if ($this->result === null) {
$result = $this->proxied->resolve();
$result = $this->didReceiveResult($result);
$this->result = $result;
}
return $this->result;
}
public function start() {
$this->proxied->start();
return $this;
}
abstract protected function didReceiveResult($result);
}

Event Timeline