/**
  * Writes data from {@link writeBuffer} to stream.
  */
 protected function write()
 {
     if (($written = @fwrite($this->getStream(), $this->writeBuffer->read($this->writeBuffer->getLength()))) === false) {
         throw new ClientException("Could not write data to socket.");
     }
     if ($written === 0) {
         throw new ClientException("Broken pipe or closed connection.");
     }
     fflush($this->getStream());
     // flush internal PHP buffers
     $this->writeBuffer->discard($written);
     $this->lastWrite = microtime(true);
 }