public function send($request, $future, $context, $conn)
{
$self = $this;
$timeout = $context->timeout;
if ($timeout > 0) {
$conn->timeoutId = swoole_timer_after($timeout, function () use($self, $future, $conn) {
$future->reject(new TimeoutException('timeout'));
if ($conn->isConnected()) {
$conn->close();
}
});
}
$conn->setCookies($this->cookies);
$conn->post($this->client->path, $request, function ($conn) use($self, $future) {
$self->cookies = $conn->cookies;
if ($conn->errCode === 0) {
if ($conn->statusCode == 200) {
$future->resolve($conn->body);
} else {
$future->reject(new Exception($conn->body));
}
} else {
$future->reject(new Exception(socket_strerror($conn->errCode)));
}
$self->sendNext($conn);
});
}