X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcore%2Fcore.cpp;h=98aa4979502c143970ced4492a094d31633ead2e;hp=e6b8c7f3b059f5ff6532509cc321ab5c55091fab;hb=c2e87bdf88192d364ad18ea28ad4cd959cd5d2ef;hpb=0ac9ce4d7cf768d13993d6aa1d6b791c4149a843 diff --git a/src/core/core.cpp b/src/core/core.cpp index e6b8c7f3..98aa4979 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -47,34 +47,9 @@ void Core::init() { } //SqliteStorage::init(); storage = new SqliteStorage(); - connect(Global::instance(), SIGNAL(dataPutLocally(UserId, QString)), this, SLOT(updateGlobalData(UserId, QString))); 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; - */ - // Read global settings from config file - QSettings s; - s.beginGroup("Global"); - foreach(QString unum, s.childGroups()) { - UserId uid = unum.toUInt(); - s.beginGroup(unum); - foreach(QString key, s.childKeys()) { - Global::updateData(uid, key, s.value(key)); - } - s.endGroup(); - } - s.endGroup(); } Core::~Core() { @@ -138,11 +113,7 @@ void Core::clientHasData() { while(readDataFromDevice(socket, bsize, item)) { if(validClients.contains(socket)) { QList sigdata = item.toList(); - if((ClientSignal)sigdata[0].toInt() == GS_UPDATE_GLOBAL_DATA) { - processClientUpdate(socket, sigdata[1].toString(), sigdata[2]); - } else { - sessions[validClients[socket]]->processSignal((ClientSignal)sigdata[0].toInt(), sigdata[1], sigdata[2], sigdata[3]); - } + sessions[validClients[socket]]->processSignal((ClientSignal)sigdata[0].toInt(), sigdata[1], sigdata[2], sigdata[3]); } else { // we need to auth the client try { @@ -174,29 +145,27 @@ QVariant Core::connectLocalClient(QString user, QString passwd) { UserId uid = instance()->storage->validateUser(user, passwd); QVariant reply = instance()->initSession(uid); instance()->guiUser = uid; - Global::setGuiUser(uid); qDebug() << "Local client connected."; return reply; } -QVariant Core::disconnectLocalClient() { +void Core::disconnectLocalClient() { qDebug() << "Local client disconnected."; instance()->guiUser = 0; - Global::setGuiUser(0); } void Core::processClientInit(QTcpSocket *socket, const QVariant &v) { VarMap msg = v.toMap(); - if(msg["GUIProtocol"].toUInt() != GUI_PROTOCOL) { + 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(); + QVariant reply = initSession(uid); validClients[socket] = uid; QList sigdata; - sigdata.append(CS_CORE_STATE); sigdata.append(QVariant(reply)); sigdata.append(QVariant()); sigdata.append(QVariant()); + sigdata.append(CS_CORE_STATE); sigdata.append(reply); sigdata.append(QVariant()); sigdata.append(QVariant()); writeDataToDevice(socket, QVariant(sigdata)); } @@ -209,35 +178,10 @@ QVariant Core::initSession(UserId uid) { //validClients[socket] = uid; } VarMap reply; - VarMap coreData; - QStringList dataKeys = Global::keys(uid); - foreach(QString key, dataKeys) { - coreData[key] = Global::data(uid, key); - } - reply["CoreData"] = coreData; reply["SessionState"] = sess->sessionState(); return reply; } -void Core::processClientUpdate(QTcpSocket *socket, QString key, const QVariant &data) { - UserId uid = validClients[socket]; - Global::updateData(uid, key, data); - QList sigdata; - sigdata.append(CS_UPDATE_GLOBAL_DATA); sigdata.append(key); sigdata.append(data); sigdata.append(QVariant()); - foreach(QTcpSocket *s, validClients.keys()) { - if(validClients[s] == uid && s != socket) writeDataToDevice(s, QVariant(sigdata)); - } -} - -void Core::updateGlobalData(UserId uid, QString key) { - QVariant data = Global::data(uid, key); - QList sigdata; - sigdata.append(CS_UPDATE_GLOBAL_DATA); sigdata.append(key); sigdata.append(data); sigdata.append(QVariant()); - foreach(QTcpSocket *socket, validClients.keys()) { - if(validClients[socket] == uid) writeDataToDevice(socket, QVariant(sigdata)); - } -} - void Core::recvProxySignal(CoreSignal sig, QVariant arg1, QVariant arg2, QVariant arg3) { CoreSession *sess = qobject_cast(sender()); Q_ASSERT(sess);