Hprose\Swoole\Socket\FullDuplexTransporter::sendAndReceive PHP Метод

sendAndReceive() публичный Метод

public sendAndReceive ( $request, $future, stdClass $context )
$context stdClass
    public function sendAndReceive($request, $future, stdClass $context)
    {
        $conn = $this->fetch();
        $id = $this->getNextId();
        if ($conn !== null) {
            $this->send($request, $future, $id, $context, $conn);
        } else {
            if ($this->size < $this->client->maxPoolSize) {
                $self = $this;
                $conn = $this->create();
                $self->init($conn);
                $conn->on('error', function ($conn) use($self, $future) {
                    $self->size--;
                    $future->reject(new Exception(socket_strerror($conn->errCode)));
                });
                $conn->on('connect', function ($conn) use($self, $request, $future, $id, $context) {
                    $self->send($request, $future, $id, $context, $conn);
                });
                $conn->connect($this->client->host, $this->client->port);
            } else {
                $this->requests[] = array($request, $future, $id, $context);
            }
        }
    }