X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=core%2Fcore.h;h=c4a66465a997959fe07072a8107adb6c54ccce16;hp=641782580315a2e6e7c7b51518ba09849bc4a29f;hb=b27b03c4239150189b7ae8963ca2e8c9b1a0ce4a;hpb=2a068c11e76c7b34afb64d443dbb1afd2e208aaa diff --git a/core/core.h b/core/core.h index 64178258..c4a66465 100644 --- a/core/core.h +++ b/core/core.h @@ -21,62 +21,148 @@ #ifndef _CORE_H_ #define _CORE_H_ -#include #include #include #include #include "server.h" +#include "storage.h" +#include "global.h" +#include "coreproxy.h" + +class CoreSession; class Core : public QObject { Q_OBJECT public: + static Core * instance(); + static void destroy(); + + static CoreSession * session(UserId); + static CoreSession * guiSession(); + static CoreSession * createSession(UserId); + + private slots: + void recvProxySignal(CoreSignal, QVariant, QVariant, QVariant); + bool startListening(uint port = 4242); + void stopListening(); + void incomingConnection(); + void clientHasData(); + void clientDisconnected(); + void updateGlobalData(UserId, QString); + private: Core(); ~Core(); - QHash > getBackLog() { return backLog; }; + void init(); + static Core *instanceptr; + + void processClientInit(QTcpSocket *socket, const QVariant &v); + void processClientUpdate(QTcpSocket *socket, QString key, const QVariant &data); + + UserId guiUser; + QHash sessions; + Storage *storage; + + QTcpServer server; // TODO: implement SSL + QHash validClients; + QHash blockSizes; +}; + +class CoreSession : public QObject { + Q_OBJECT + + public: + CoreSession(UserId, Storage *); + ~CoreSession(); + + QList buffers() const; + inline UserId userId(); + QVariant sessionState(); + CoreProxy *proxy(); public slots: void connectToIrc(QStringList); + void processSignal(GUISignal, QVariant, QVariant, QVariant); + void sendBacklog(BufferId, QVariant, QVariant); + void msgFromGui(BufferId, QString message); + void sendServerStates(); signals: - void msgFromGUI(QString network, QString channel, QString message); - void displayMsg(QString network, Message message); + 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 connectToIrc(QString net); void disconnectFromIrc(QString net); void serverStateRequested(); + void backlogData(BufferId, QList, bool done); + + void bufferIdUpdated(BufferId); + private slots: - //void serverStatesRequested(); - void globalDataUpdated(QString); + //void recvProxySignal(CoreSignal, QVariant arg1 = QVariant(), QVariant arg2 = QVariant(), QVariant arg3 = QVariant()); + void globalDataUpdated(UserId, QString); void recvStatusMsgFromServer(QString msg); - void recvMessageFromServer(Message msg); + void recvMessageFromServer(Message::Type, QString target, QString text, QString sender = "", quint8 flags = Message::None); + void serverConnected(QString net); void serverDisconnected(QString net); private: - QDir backLogDir; - bool backLogEnabled; + CoreProxy *coreProxy; + Storage *storage; QHash servers; - QHash > backLog; - //QHash netIdx; - QHash logFiles; - QHash logStreams; - QHash logFileDates; - QHash logFileDirs; + UserId user; - QSqlDatabase logDb; +}; + +/* +class Core : public QObject { + Q_OBJECT - //uint getNetIdx(QString net); - void initBackLog(); - void initBackLogOld(); - void logMessage(QString, Message); - void logMessageOld(QString, Message); + public: + + Core(); + ~Core(); + QList getBuffers(); + + public slots: + void connectToIrc(QStringList); + void sendBacklog(BufferId, QVariant, QVariant); + void msgFromGUI(BufferId, QString message); + + signals: + void msgFromGUI(QString net, QString buf, QString message); + void displayMsg(Message message); + void displayStatusMsg(QString, QString); + + void connectToIrc(QString net); + void disconnectFromIrc(QString net); + void serverStateRequested(); + + void backlogData(BufferId, QList, bool done); + + void bufferIdUpdated(BufferId); + + private slots: + void globalDataUpdated(QString); + void recvStatusMsgFromServer(QString msg); + void recvMessageFromServer(Message::Type, QString target, QString text, QString sender = "", quint8 flags = Message::None); + void serverDisconnected(QString net); + + private: + Storage *storage; + QHash servers; + UserId user; }; -extern Core *core; +*/ +//extern Core *core; + #endif