public function update()
{
if ($this->server->needReconnect and $this->connected) {
$this->connected = false;
$this->server->needReconnect = false;
}
if ($this->connected) {
$err = socket_last_error($this->socket->getSocket());
socket_clear_error($this->socket->getSocket());
if ($err == 10057 or $err == 10054) {
$this->server->getLogger()->error("Synapse connection has disconnected unexpectedly");
$this->connected = false;
$this->server->setConnected(false);
} else {
$data = @socket_read($this->socket->getSocket(), 65535, PHP_BINARY_READ);
if ($data != "") {
$this->receiveBuffer .= $data;
}
}
} else {
if (($time = microtime(true)) - $this->lastCheck >= 3) {
//re-connect
$this->server->getLogger()->notice("Trying to re-connect to Synapse Server");
if ($this->socket->connect()) {
$this->connected = true;
@socket_getpeername($this->socket->getSocket(), $address, $port);
$this->ip = $address;
$this->port = $port;
$this->server->setConnected(true);
$this->server->setNeedAuth(true);
}
$this->lastCheck = $time;
}
}
}