X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fclientsyncer.h;h=aa8d786af7da9eaebb16a587da25208036915e20;hp=8f370483bbb83e3ea69a356f79dbadd2b40df143;hb=46d75f41de7c1aaee605c096da28d4b0d8abf138;hpb=a33e42aee121185f479667b2104a15fc2033762e diff --git a/src/client/clientsyncer.h b/src/client/clientsyncer.h index 8f370483..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,21 +18,24 @@ * 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 -#ifndef QT_NO_OPENSSL -#include +#ifdef HAVE_SSL +# include #else -#include +# include #endif +#include "types.h" + class IrcUser; class IrcChannel; +class SignalProxy; class ClientSyncer : public QObject { Q_OBJECT @@ -40,16 +43,19 @@ class ClientSyncer : public QObject { 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(); @@ -57,14 +63,22 @@ signals: void startCoreSetup(const QVariantList &); void coreSetupSuccess(); void coreSetupFailed(const QString &error); - - void encrypted(bool); - + + 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(); @@ -72,24 +86,35 @@ private slots: void coreSocketDisconnected(); void clientInitAck(const QVariantMap &msg); - + // for sync progress void networkInitDone(); void checkSyncState(); - + void syncToCore(const QVariantMap &sessionState); + void internalSessionStateReceived(const QVariant &packedState); void sessionStateReceived(const QVariantMap &state); - + + void connectionReady(); void doCoreSetup(const QVariant &setupData); -#ifndef QT_NO_OPENSSL - void sslErrors(const QList &errors); + + 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; + QPointer _socket; + quint32 _blockSize; + QVariantMap coreConnectionInfo; - + QVariantMap _coreMsgBuffer; + QSet netsToSync; int numNetsToSync; };