/** * @throws NoSubscriptionException * * @return \TrafficCophp\Message\ServerMessage */ public function receive(AbstractServerMessage $message) { if (!$this->isRegistered()) { throw new NoSubscriptionException('Youre not subscribed on a channel!'); } $buffer = new Buffer($this->transport->receive(4)); $message->parse($this->transport->receive($buffer->readInt32BE(0))); return $message; }
public function parse($raw) { $buffer = new Buffer($raw); $channelLength = $buffer->readInt32BE(0); $channelList = $buffer->read(4, $channelLength); foreach (explode(',', $channelList) as $channelName) { $this->channels->addChannel(new Channel($channelName)); } $this->message = $buffer->read(4 + $channelLength, $buffer->length() - (4 + $channelLength)); $this->parsed = true; }
public function testWritingAndReadingOnTheSameBuffer() { $buffer = new Buffer(10); $int32be = 0.0; $string = 'hello!'; $buffer->writeInt32BE($int32be, 0); $buffer->write($string, 4); $this->assertSame($string, $buffer->read(4, 6)); $this->assertSame($int32be, $buffer->readInt32BE(0)); }