X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcore%2Fcoresession.cpp;h=d28ddfba5fa629301afd53de276099c58cfa339f;hb=a20c9bf454288c998cb2a5d2a1fdf0927c93f1f3;hp=d7a330a0f53c2c5eebe6608765e96933217f12ba;hpb=76d18ce4c66f5e654a3743811e426e8b48d230ca;p=quassel.git diff --git a/src/core/coresession.cpp b/src/core/coresession.cpp index d7a330a0..d28ddfba 100644 --- a/src/core/coresession.cpp +++ b/src/core/coresession.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2013 by the Quassel Project * + * Copyright (C) 2005-2014 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -34,6 +34,7 @@ #include "corenetwork.h" #include "corenetworkconfig.h" #include "coresessioneventprocessor.h" +#include "coretransfermanager.h" #include "coreusersettings.h" #include "ctcpparser.h" #include "eventstringifier.h" @@ -43,10 +44,10 @@ #include "ircuser.h" #include "logger.h" #include "messageevent.h" +#include "remotepeer.h" #include "storage.h" #include "util.h" -#include "protocols/legacy/legacypeer.h" class ProcessMessagesEvent : public QEvent { @@ -66,6 +67,7 @@ CoreSession::CoreSession(UserId uid, bool restoreState, QObject *parent) _ircListHelper(new CoreIrcListHelper(this)), _networkConfig(new CoreNetworkConfig("GlobalNetworkConfig", this)), _coreInfo(this), + _transferManager(new CoreTransferManager(this)), _eventManager(new CoreEventManager(this)), _eventStringifier(new EventStringifier(this)), _sessionEventProcessor(new CoreSessionEventProcessor(this)), @@ -120,6 +122,7 @@ CoreSession::CoreSession(UserId uid, bool restoreState, QObject *parent) p->synchronize(networkConfig()); p->synchronize(&_coreInfo); p->synchronize(&_ignoreListManager); + p->synchronize(transferManager()); // Restore session state if (restoreState) restoreSessionState(); @@ -208,10 +211,7 @@ void CoreSession::restoreSessionState() void CoreSession::addClient(RemotePeer *peer) { - QVariantMap reply; - reply["MsgType"] = "SessionInit"; - reply["SessionState"] = sessionState(); - peer->writeSocketData(reply); + peer->dispatch(sessionState()); signalProxy()->addPeer(peer); } @@ -375,34 +375,20 @@ void CoreSession::processMessages() } -QVariant CoreSession::sessionState() +Protocol::SessionState CoreSession::sessionState() const { - QVariantMap v; + QVariantList bufferInfos; + QVariantList networkIds; + QVariantList identities; - v["CoreFeatures"] = (int)Quassel::features(); + foreach(const BufferInfo &id, buffers()) + bufferInfos << QVariant::fromValue(id); + foreach(const NetworkId &id, _networks.keys()) + networkIds << QVariant::fromValue(id); + foreach(const Identity *i, _identities.values()) + identities << QVariant::fromValue(*i); - QVariantList bufs; - foreach(BufferInfo id, buffers()) bufs << qVariantFromValue(id); - v["BufferInfos"] = bufs; - QVariantList networkids; - foreach(NetworkId id, _networks.keys()) networkids << qVariantFromValue(id); - v["NetworkIds"] = networkids; - - quint32 ircusercount = 0; - quint32 ircchannelcount = 0; - foreach(Network *net, _networks.values()) { - ircusercount += net->ircUserCount(); - ircchannelcount += net->ircChannelCount(); - } - v["IrcUserCount"] = ircusercount; - v["IrcChannelCount"] = ircchannelcount; - - QList idlist; - foreach(Identity *i, _identities.values()) idlist << qVariantFromValue(*i); - v["Identities"] = idlist; - - //v["Payload"] = QByteArray(100000000, 'a'); // for testing purposes - return v; + return Protocol::SessionState(identities, bufferInfos, networkIds); }