Example #1
0
 /**
  * Waits message from server
  *
  * @param StreamInterface $message
  *
  * @return bool
  * @throws \RuntimeException
  */
 public function waitMessage(StreamInterface $message)
 {
     // packet format
     // <int32>   packet length (length itself is not counted)
     // <byte>[5] ignore
     // <.....> message
     $buffer = $this->sock->read(4);
     $s = new MemStream($buffer);
     $s->serial_uint32_n($size);
     $buffer = $this->sock->read($size);
     $len = strlen($buffer);
     if ($size != $len) {
         throw new \RuntimeException("Partial packet received (got {$len}, expected {$size})");
     }
     // discard 5 first bytes
     // <uint32> 'zeroValue=123'
     // <byte>   TFormat (bitfield)
     $buffer = substr($buffer, 5);
     $message->serial(new MemStream($buffer));
 }