Aerys\Websocket\Rfc6455Endpoint::write PHP Method

write() private method

private write ( Aerys\Websocket\Rfc6455Client $client, $frameInfo ) : Promise
$client Aerys\Websocket\Rfc6455Client
return Promise
    private function write(Rfc6455Client $client, $frameInfo) : Promise
    {
        if ($client->closedAt) {
            return new Failure(new ClientException());
        }
        $msg = $frameInfo["msg"];
        $len = \strlen($msg);
        $w = chr($frameInfo["fin"] << 7 | $frameInfo["rsv"] << 4 | $frameInfo["opcode"]);
        if ($len > 0xffff) {
            $w .= "" . pack('J', $len);
        } elseif ($len > 0x7d) {
            $w .= "~" . pack('n', $len);
        } else {
            $w .= chr($len);
        }
        $w .= $msg;
        if ($client->writeBuffer != "") {
            if (\strlen($client->writeBuffer) < 65536 && !$client->writeDataQueue && !$client->writeControlQueue) {
                $client->writeBuffer .= $w;
                $deferred = $client->writeDeferred;
            } elseif ($frameInfo["opcode"] >= 0x8) {
                $client->writeControlQueue[] = $w;
                $deferred = $client->writeDeferredControlQueue[] = new Deferred();
            } else {
                $client->writeDataQueue[] = $w;
                $deferred = $client->writeDeferredDataQueue[] = new Deferred();
            }
        } else {
            \Amp\enable($client->writeWatcher);
            $client->writeBuffer = $w;
            $deferred = $client->writeDeferred = new Deferred();
        }
        return $deferred->promise();
    }