private function getType($keepWaiting = false)
{
$type = null;
while (!feof($this->socket)) {
$type = fgetc($this->socket);
if ($type !== false && $type !== '') {
break;
}
$info = stream_get_meta_data($this->socket);
if (!$keepWaiting || !$info['timed_out']) {
break;
}
}
if ($type === false || $type === '') {
throw new ConnectionException('Nothing received while reading from client');
}
return $type;
}