function read_packets()
 {
     while ($this->read_buffer->length() > 4) {
         //      $this->log("reading packets\n");
         //      $this->log("Read Buffer:\n" . hex_pretty_print($this->read_buffer->buffer) . "\n");
         list($length, $number) = Packet::parse_header($this->read_buffer->buffer);
         //      $this->log("got packet {$number} of length {$length} read buffer length: " . $this->read_buffer->length() . "\n");
         if ($length + 4 <= $this->read_buffer->length()) {
             //        $this->log("read packet of length {$length}.\n");
             $binary = $this->read_buffer->pop($length + 4);
             $packet = new Packet($binary);
             //        $this->log("Packet:\n" . hex_pretty_print($binary) . "\n");
             //        $this->log(hex_php_string($binary) . "\n");
             $this->queue_read_packet($packet);
         } else {
             return;
         }
     }
 }