Hprose\Swoole\Http\Transporter::sendAndReceive PHP Method

sendAndReceive() public method

public sendAndReceive ( $request, $future, stdClass $context )
$context stdClass
    public function sendAndReceive($request, $future, stdClass $context)
    {
        $conn = $this->fetch();
        if ($conn !== null) {
            $this->send($request, $future, $context, $conn);
        } else {
            if ($this->size < $this->client->maxPoolSize) {
                $self = $this;
                $conn = $this->create();
                $conn->on('error', function ($conn) use($future) {
                    $future->reject(new Exception(socket_strerror($conn->errCode)));
                });
                $conn->on('close', function ($conn) use($self, $future) {
                    $self->clean($conn);
                    if ($conn->errCode !== 0) {
                        $future->reject(new Exception(socket_strerror($conn->errCode)));
                    } else {
                        $future->reject(new Exception('The server is closed.'));
                    }
                    $self->size--;
                });
                $conn->set(array('keep_alive' => $this->client->keepAlive));
                $conn->setHeaders($this->client->header);
                $self->send($request, $future, $context, $conn);
            } else {
                $this->requests[] = array($request, $future, $context);
            }
        }
    }