-void Client::coreSocketConnected() {
- connect(this, SIGNAL(recvPartialItem(uint, uint)), this, SIGNAL(coreConnectionProgress(uint, uint)));
- emit coreConnectionMsg(tr("Synchronizing to core..."));
- QVariantMap clientInit;
- clientInit["GuiProtocol"] = GUI_PROTOCOL;
- clientInit["User"] = coreConnectionInfo["User"].toString();
- clientInit["Password"] = coreConnectionInfo["Password"].toString();
- SignalProxy::writeDataToDevice(socket, clientInit);
-}
-
-void Client::coreSocketDisconnected() {
- instance()->connectedToCore = false;
- emit disconnected();
- emit coreConnectionStateChanged(false);
- socket->deleteLater();
- blockSize = 0;
-
- /* Clear internal data. Hopefully nothing relies on it at this point. */
- _networkModel->clear();
-
- QHash<BufferId, Buffer *>::iterator bufferIter = _buffers.begin();
- while(bufferIter != _buffers.end()) {
- Buffer *buffer = bufferIter.value();
- disconnect(buffer, SIGNAL(destroyed()), this, 0);
- bufferIter = _buffers.erase(bufferIter);
- buffer->deleteLater();
- }
- Q_ASSERT(_buffers.isEmpty());
-
-
- QHash<NetworkId, NetworkInfo*>::iterator netIter = _networkInfo.begin();
- while(netIter != _networkInfo.end()) {
- NetworkInfo *net = netIter.value();
- disconnect(net, SIGNAL(destroyed()), this, 0);
- netIter = _networkInfo.erase(netIter);
- net->deleteLater();
- }
- Q_ASSERT(_networkInfo.isEmpty());
-
- QHash<IdentityId, Identity*>::iterator idIter = _identities.begin();
- while(idIter != _identities.end()) {
- Identity *id = idIter.value();
- emit identityRemoved(id->id());
- idIter = _identities.erase(idIter);
- id->deleteLater();
- }
- Q_ASSERT(_identities.isEmpty());
-
- coreConnectionInfo.clear();
- sessionData.clear();
- layoutQueue.clear();
- layoutTimer->stop();
-}
-
-void Client::recvCoreState(const QVariant &state) {
- disconnect(this, SIGNAL(recvPartialItem(uint, uint)), this, SIGNAL(coreConnectionProgress(uint, uint)));
- disconnect(socket, 0, this, 0); // rest of communication happens through SignalProxy
- signalProxy()->addPeer(socket);
- syncToCore(state);
-}
-
-// TODO: auth errors
-void Client::syncToCore(const QVariant &coreState) {
- if(!coreState.toMap().contains("SessionState")) {
- emit coreConnectionError(tr("Invalid data received from core!"));
- disconnectFromCore();
- return;
- }