* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
-#ifndef CORESESSION_H
-#define CORESESSION_H
+#pragma once
+#include <QHash>
+#include <QSet>
#include <QString>
#include <QVariant>
+#include <utility>
#include "coreinfo.h"
#include "corealiasmanager.h"
Q_OBJECT
public:
- CoreSession(UserId, bool restoreState, bool strictIdentEnabled, QObject *parent = 0);
+ CoreSession(UserId, bool restoreState, bool strictIdentEnabled, QObject *parent = nullptr);
QList<BufferInfo> buffers() const;
inline UserId user() const { return _user; }
signals:
void initialized();
- void sessionState(const Protocol::SessionState &sessionState);
+ void sessionStateReceived(const Protocol::SessionState &sessionState);
//void msgFromGui(uint netid, QString buf, QString message);
void displayMsg(Message message);
void disconnectFromCore();
protected:
- virtual void customEvent(QEvent *event);
+ void customEvent(QEvent *event) override;
private slots:
void removeClient(Peer *peer);
void saveSessionState() const;
+ void onNetworkDisconnected(NetworkId networkId);
+
private:
void processMessages();
SignalProxy *_signalProxy;
CoreAliasManager _aliasManager;
- // QHash<NetworkId, NetworkConnection *> _connections;
- QHash<NetworkId, CoreNetwork *> _networks;
- // QHash<NetworkId, CoreNetwork *> _networksToRemove;
+
QHash<IdentityId, CoreIdentity *> _identities;
+ QHash<NetworkId, CoreNetwork *> _networks;
+ QSet<NetworkId> _networksPendingDisconnect;
CoreBufferSyncer *_bufferSyncer;
CoreBacklogManager *_backlogManager;
QString text;
QString sender;
Message::Flags flags;
- RawMessage(NetworkId networkId, Message::Type type, BufferInfo::Type bufferType, const QString &target, const QString &text, const QString &sender, Message::Flags flags)
- : networkId(networkId), type(type), bufferType(bufferType), target(target), text(text), sender(sender), flags(flags) {}
+ RawMessage(NetworkId networkId, Message::Type type, BufferInfo::Type bufferType, QString target, QString text, QString sender, Message::Flags flags)
+ : networkId(networkId), type(type), bufferType(bufferType), target(std::move(target)), text(std::move(text)), sender(std::move(sender)), flags(flags) {}
};
-
-#endif