/**
* {@inheritdoc}
*/
public function writeResponse(Socket $socket, Response $response, Request $request = null, float $timeout = 0) : \Generator
{
$written = (yield from $socket->write($this->encoder->encodeResponse($response)));
$stream = $response->getBody();
if ((!isset($request) || $request->getMethod() !== 'HEAD') && $stream->isReadable()) {
$written += (yield from Stream\pipe($stream, $socket, false, 0, null, $timeout));
}
return $written;
}