setProgressValue(value);
}
-void CoreConnection::resetConnection(bool wantReconnect) {
- _wantReconnect = wantReconnect;
-
- if(_socket) {
- disconnect(_socket, 0, this, 0);
- _socket->deleteLater();
- _socket = 0;
- }
- _blockSize = 0;
-
- _coreMsgBuffer.clear();
-
- _netsToSync.clear();
- _numNetsToSync = 0;
-
- setProgressMaximum(-1); // disable
- setState(Disconnected);
-
- emit connectionMsg(tr("Disconnected from core."));
- emit encrypted(false);
-
- // initiate if a reconnect if appropriate
- CoreConnectionSettings s;
- if(wantReconnect && s.autoReconnect()) {
- _reconnectTimer.start();
- //reconnectToCore();
- }
-}
-
void CoreConnection::reconnectTimeout() {
if(!_socket) {
CoreConnectionSettings s;
}
void CoreConnection::coreSocketDisconnected() {
- emit disconnected();
qDebug() << Q_FUNC_INFO;
resetConnection(true);
// FIXME handle disconnects gracefully
resetConnection(wantReconnect);
}
+void CoreConnection::resetConnection(bool wantReconnect) {
+ _wantReconnect = wantReconnect;
+
+ if(_socket) {
+ disconnect(_socket, 0, this, 0);
+ _socket->deleteLater();
+ _socket = 0;
+ }
+ _blockSize = 0;
+
+ _coreMsgBuffer.clear();
+
+ _netsToSync.clear();
+ _numNetsToSync = 0;
+
+ setProgressMaximum(-1); // disable
+ setState(Disconnected);
+
+ emit connectionMsg(tr("Disconnected from core."));
+ emit encrypted(false);
+
+ // initiate if a reconnect if appropriate
+ CoreConnectionSettings s;
+ if(wantReconnect && s.autoReconnect()) {
+ _reconnectTimer.start();
+ }
+}
+
void CoreConnection::reconnectToCore() {
if(currentAccount().isValid())
connectToCore(currentAccount().accountId());
checkSyncState();
}
+// this is also called for destroyed networks!
void CoreConnection::networkInitDone() {
- Network *net = qobject_cast<Network *>(sender());
+ QObject *net = sender();
Q_ASSERT(net);
disconnect(net, 0, this, 0);
_netsToSync.remove(net);
}
void CoreConnection::checkSyncState() {
- if(_netsToSync.isEmpty()) {
+ if(_netsToSync.isEmpty() && state() >= Synchronizing) {
setState(Synchronized);
setProgressText(tr("Synchronized to %1").arg(currentAccount().accountName()));
setProgressMaximum(-1);
connect(&_heartBeatTimer, SIGNAL(timeout()), this, SLOT(sendHeartBeat()));
setHeartBeatInterval(30);
setMaxHeartBeatCount(2);
+ _heartBeatTimer.start();
_secure = false;
updateSecureState();
}
}
void SignalProxy::setMaxHeartBeatCount(int max) {
- if(max < 0)
- _heartBeatTimer.stop();
- else {
- _maxHeartBeatCount = max;
- if(!_heartBeatTimer.isActive())
- _heartBeatTimer.start();
- }
+ _maxHeartBeatCount = max;
}
bool SignalProxy::addPeer(SignalProxy* proxy) {
if(ioPeer->sentHeartBeats > 0) {
updateLag(ioPeer, ioPeer->sentHeartBeats * _heartBeatTimer.interval());
}
- if(ioPeer->sentHeartBeats >= maxHeartBeatCount())
+ if(maxHeartBeatCount() >= 0 && ioPeer->sentHeartBeats >= maxHeartBeatCount())
toClose.append(ioPeer);
else
ioPeer->sentHeartBeats++;