#include <QString>
#include <QVariant>
-#include "coreproxy.h"
+#include "message.h"
class Server;
+class SignalProxy;
class Storage;
class CoreSession : public QObject {
Q_OBJECT
public:
- CoreSession(UserId, Storage *);
+ CoreSession(UserId, Storage *, QObject *parent = 0);
~CoreSession();
QList<BufferId> buffers() const;
UserId userId() const;
QVariant sessionState();
- CoreProxy *proxy();
public slots:
- void connectToIrc(QStringList);
- void processSignal(ClientSignal, QVariant, QVariant, QVariant);
+ //! Store a piece session-wide data and distribute it to connected clients.
+ void storeSessionData(const QString &key, const QVariant &data);
+
+ void addClient(QIODevice *connection);
+
+ public:
+ //! Retrieve a piece of session-wide data.
+ QVariant retrieveSessionData(const QString &key, const QVariant &def = QVariant());
+
+ SignalProxy *signalProxy() const;
+
+ public slots:
+ void connectToNetwork(QString);
+ //void processSignal(ClientSignal, QVariant, QVariant, QVariant);
void sendBacklog(BufferId, QVariant, QVariant);
void msgFromGui(BufferId, QString message);
void sendServerStates();
signals:
- void proxySignal(CoreSignal, QVariant arg1 = QVariant(), QVariant arg2 = QVariant(), QVariant arg3 = QVariant());
-
void msgFromGui(QString net, QString buf, QString message);
void displayMsg(Message message);
void displayStatusMsg(QString, QString);
void disconnectFromIrc(QString net);
void serverStateRequested();
- void backlogData(BufferId, QList<QVariant>, bool done);
+ void backlogData(BufferId, QVariantList, bool done);
void bufferIdUpdated(BufferId);
+ void sessionDataChanged(const QString &key);
+ void sessionDataChanged(const QString &key, const QVariant &data);
private slots:
- //void recvProxySignal(CoreSignal, QVariant arg1 = QVariant(), QVariant arg2 = QVariant(), QVariant arg3 = QVariant());
- void globalDataUpdated(UserId, QString);
void recvStatusMsgFromServer(QString msg);
void recvMessageFromServer(Message::Type, QString target, QString text, QString sender = "", quint8 flags = Message::None);
void serverConnected(QString net);
void serverDisconnected(QString net);
private:
- CoreProxy *coreProxy;
+ UserId user;
+
+ SignalProxy *_signalProxy;
Storage *storage;
QHash<QString, Server *> servers;
- UserId user;
+ QVariantMap sessionData;
+ QMutex mutex;
};
#endif