X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fclientsyncer.h;h=aa8d786af7da9eaebb16a587da25208036915e20;hp=95aee59fe338ccab2a0b823caa23178e1c3706cc;hb=46d75f41de7c1aaee605c096da28d4b0d8abf138;hpb=0c9cd0eef379e1d3e10a75cc8506a7e65f95fd67 diff --git a/src/client/clientsyncer.h b/src/client/clientsyncer.h index 95aee59f..aa8d786a 100644 --- a/src/client/clientsyncer.h +++ b/src/client/clientsyncer.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-08 by the Quassel IRC Team * + * Copyright (C) 2005-09 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -18,80 +18,105 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#ifndef _CLIENTSYNCER_H_ -#define _CLIENTSYNCER_H_ +#ifndef CLIENTSYNCER_H_ +#define CLIENTSYNCER_H_ #include #include -#include #include +#ifdef HAVE_SSL +# include +#else +# include +#endif + +#include "types.h" + class IrcUser; class IrcChannel; +class SignalProxy; class ClientSyncer : public QObject { Q_OBJECT - public: - ClientSyncer(QObject *parent = 0); - ~ClientSyncer(); - - signals: - void recvPartialItem(quint32 avail, quint32 size); - void connectionError(const QString &errorMsg); - void connectionMsg(const QString &msg); - void sessionProgress(quint32 part, quint32 total); - void networksProgress(quint32 part, quint32 total); - void channelsProgress(quint32 part, quint32 total); - void ircUsersProgress(quint32 part, quint32 total); - void socketStateChanged(QAbstractSocket::SocketState); - void socketDisconnected(); - - void startLogin(); - void loginFailed(const QString &error); - void loginSuccess(); - void syncFinished(); - void startCoreSetup(const QVariantList &); - void coreSetupSuccess(); - void coreSetupFailed(const QString &error); - - - public slots: - void connectToCore(const QVariantMap &); - void loginToCore(const QString &user, const QString &passwd); - void disconnectFromCore(); - - private slots: - void coreSocketError(QAbstractSocket::SocketError); - void coreHasData(); - void coreSocketConnected(); - void coreSocketDisconnected(); - - void clientInitAck(const QVariantMap &msg); +public: + ClientSyncer(QObject *parent = 0); + ~ClientSyncer(); + + inline const QIODevice *currentDevice() { return _socket; } + +signals: + void recvPartialItem(quint32 avail, quint32 size); + void connectionError(const QString &errorMsg); + void connectionWarnings(const QStringList &warnings); + void connectionMsg(const QString &msg); + void sessionProgress(quint32 part, quint32 total); + void networksProgress(quint32 part, quint32 total); + void socketStateChanged(QAbstractSocket::SocketState); + void socketDisconnected(); + + void startLogin(); + void loginFailed(const QString &error); + void loginSuccess(); + void syncFinished(); + void startCoreSetup(const QVariantList &); + void coreSetupSuccess(); + void coreSetupFailed(const QString &error); + + void encrypted(); // relaying encrypted signal of the encapsulated SslSocket + + void startInternalCore(ClientSyncer *syncer); + void connectToInternalCore(SignalProxy *proxy); + + void handleIgnoreWarnings(bool permanently); + +public slots: + void connectToCore(const QVariantMap &); + void loginToCore(const QString &user, const QString &passwd); + void disconnectFromCore(); + void useInternalCore(); + + inline void ignoreWarnings(bool permanently) { emit handleIgnoreWarnings(permanently); } + +private slots: + void coreSocketError(QAbstractSocket::SocketError); + void coreHasData(); + void coreSocketConnected(); + void coreSocketDisconnected(); + + void clientInitAck(const QVariantMap &msg); // for sync progress - void networkInitDone(); - void ircUserAdded(IrcUser *); - void ircUserRemoved(QObject *); - void ircUserInitDone(IrcUser *); - void ircChannelAdded(IrcChannel *); - void ircChannelRemoved(QObject *); - void ircChannelInitDone(IrcChannel *); - void checkSyncState(); + void networkInitDone(); + void checkSyncState(); + + void syncToCore(const QVariantMap &sessionState); + void internalSessionStateReceived(const QVariant &packedState); + void sessionStateReceived(const QVariantMap &state); - void syncToCore(const QVariantMap &sessionState); - void sessionStateReceived(const QVariantMap &state); + void connectionReady(); + void doCoreSetup(const QVariant &setupData); - void doCoreSetup(const QVariant &setupData); + void setWarningsHandler(const char *slot); + void resetWarningsHandler(); + void resetConnection(); + +#ifdef HAVE_SSL + void ignoreSslWarnings(bool permanently); + void sslSocketEncrypted(); + void sslErrors(const QList &errors); +#endif - private: - QPointer socket; - quint32 blockSize; - QVariantMap coreConnectionInfo; +private: + QPointer _socket; + quint32 _blockSize; - QSet netsToSync, channelsToSync, usersToSync; - int numNetsToSync, numChannelsToSync, numUsersToSync; + QVariantMap coreConnectionInfo; + QVariantMap _coreMsgBuffer; + QSet netsToSync; + int numNetsToSync; }; #endif