X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcore.cpp;h=dfaa1b723b263bd6ef3a47896406442e1c6c5cb6;hp=b3e6d0322c229a23255a6e703cba6808f4d5baa5;hb=06a03c2c69ee934aaeec83512bae2fffee83a340;hpb=372e281c83794188819e2a74f570e16684778456 diff --git a/src/core/core.cpp b/src/core/core.cpp index b3e6d032..dfaa1b72 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -33,6 +33,7 @@ Core * Core::instance() { } void Core::destroy() { + //instanceptr->deleteLater(); delete instanceptr; instanceptr = 0; } @@ -48,26 +49,14 @@ void Core::init() { //SqliteStorage::init(); storage = new SqliteStorage(); connect(&server, SIGNAL(newConnection()), this, SLOT(incomingConnection())); - //startListening(); // FIXME + startListening(); // FIXME make configurable guiUser = 0; - /* - if(Global::runMode == Global::Monolithic) { // TODO Make GUI user configurable - try { - guiUser = storage->validateUser("Default", "password"); - } catch(Storage::AuthError) { - guiUser = storage->addUser("Default", "password"); - } - Q_ASSERT(guiUser); - Global::setGuiUser(guiUser); - createSession(guiUser); - } else guiUser = 0; - */ } Core::~Core() { - foreach(QTcpSocket *sock, validClients.keys()) { - delete sock; - } + //foreach(QTcpSocket *sock, validClients.keys()) { + // delete sock; + //} qDeleteAll(sessions); delete storage; } @@ -89,7 +78,7 @@ CoreSession *Core::createSession(UserId uid) { Q_ASSERT(!core->sessions.contains(uid)); CoreSession *sess = new CoreSession(uid, core->storage); core->sessions[uid] = sess; - connect(sess, SIGNAL(proxySignal(CoreSignal, QVariant, QVariant, QVariant)), core, SLOT(recvProxySignal(CoreSignal, QVariant, QVariant, QVariant))); + //connect(sess, SIGNAL(proxySignal(CoreSignal, QVariant, QVariant, QVariant)), core, SLOT(recvProxySignal(CoreSignal, QVariant, QVariant, QVariant))); return sess; } @@ -122,10 +111,12 @@ void Core::clientHasData() { Q_ASSERT(socket && blockSizes.contains(socket)); quint32 bsize = blockSizes.value(socket); QVariant item; - while(readDataFromDevice(socket, bsize, item)) { + if(readDataFromDevice(socket, bsize, item)) { + /* this is probably obsolete now */ if(validClients.contains(socket)) { - QList sigdata = item.toList(); - sessions[validClients[socket]]->processSignal((ClientSignal)sigdata[0].toInt(), sigdata[1], sigdata[2], sigdata[3]); + Q_ASSERT(false); + //QList sigdata = item.toList(); + //sessions[validClients[socket]]->processSignal((ClientSignal)sigdata[0].toInt(), sigdata[1], sigdata[2], sigdata[3]); } else { // we need to auth the client try { @@ -140,7 +131,7 @@ void Core::clientHasData() { return; } } - blockSizes[socket] = bsize = 0; + blockSizes[socket] = bsize = 0; // FIXME blockSizes aufräum0rn! } blockSizes[socket] = bsize; } @@ -167,18 +158,20 @@ void Core::disconnectLocalClient() { } void Core::processClientInit(QTcpSocket *socket, const QVariant &v) { - VarMap msg = v.toMap(); - if(msg["GUIProtocol"].toUInt() != GUI_PROTOCOL) { + QVariantMap msg = v.toMap(); + if(msg["GuiProtocol"].toUInt() != GUI_PROTOCOL) { //qWarning() << "Client version mismatch."; throw Exception("GUI client version mismatch"); } // Auth UserId uid = storage->validateUser(msg["User"].toString(), msg["Password"].toString()); // throws exception if this failed - VarMap reply = initSession(uid).toMap(); - validClients[socket] = uid; - QList sigdata; - sigdata.append(CS_CORE_STATE); sigdata.append(QVariant(reply)); sigdata.append(QVariant()); sigdata.append(QVariant()); - writeDataToDevice(socket, QVariant(sigdata)); + QVariant reply = initSession(uid); + validClients[socket] = uid; // still needed? FIXME + //QList sigdata; + //sigdata.append(CS_CORE_STATE); sigdata.append(reply); sigdata.append(QVariant()); sigdata.append(QVariant()); + disconnect(socket, 0, this, 0); + sessions[uid]->addClient(socket); + writeDataToDevice(socket, reply); } QVariant Core::initSession(UserId uid) { @@ -189,11 +182,12 @@ QVariant Core::initSession(UserId uid) { sess = createSession(uid); //validClients[socket] = uid; } - VarMap reply; + QVariantMap reply; reply["SessionState"] = sess->sessionState(); return reply; } +/* void Core::recvProxySignal(CoreSignal sig, QVariant arg1, QVariant arg2, QVariant arg3) { CoreSession *sess = qobject_cast(sender()); Q_ASSERT(sess); @@ -205,3 +199,4 @@ void Core::recvProxySignal(CoreSignal sig, QVariant arg1, QVariant arg2, QVarian if(validClients[socket] == uid) writeDataToDevice(socket, QVariant(sigdata)); } } +*/