/** * Send message * * @param StreamInterface $message */ public function sendMessage(StreamInterface $message) { // TFormat from <nel/message.h> $messageType = 0; // build packet // <int32> packet length (length itself is not counted) // <int32> packet number // <byte> message type // <.....> message // first pass - to get packet length $hd = new MemStream(); $hd->serial_uint32($this->msgNum); $hd->serial_byte($messageType); // include original message $message->serial($hd); $this->msgNum++; $buf = $hd->getBuffer(); $len = strlen($buf); // second pass - final packet $hd = new MemStream(); $hd->serial_uint32_n($len); $hd->serial_buffer($buf); $this->sock->write($hd->getBuffer()); }