1
/***************************************************************************
2
* Copyright (C) 2005-09 by the Quassel Project *
3
* devel@quassel-irc.org *
5
* This program is free software; you can redistribute it and/or modify *
6
* it under the terms of the GNU General Public License as published by *
7
* the Free Software Foundation; either version 2 of the License, or *
8
* (at your option) version 3. *
10
* This program is distributed in the hope that it will be useful, *
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13
* GNU General Public License for more details. *
15
* You should have received a copy of the GNU General Public License *
16
* along with this program; if not, write to the *
17
* Free Software Foundation, Inc., *
18
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
19
***************************************************************************/
21
#ifndef CLIENTSYNCER_H_
22
#define CLIENTSYNCER_H_
26
#include <QVariantMap>
29
# include <QSslSocket>
31
# include <QTcpSocket>
40
class ClientSyncer : public QObject {
44
ClientSyncer(QObject *parent = 0);
47
inline const QIODevice *currentDevice() { return _socket; }
50
void recvPartialItem(quint32 avail, quint32 size);
51
void connectionError(const QString &errorMsg);
52
void connectionWarnings(const QStringList &warnings);
53
void connectionMsg(const QString &msg);
54
void sessionProgress(quint32 part, quint32 total);
55
void networksProgress(quint32 part, quint32 total);
56
void socketStateChanged(QAbstractSocket::SocketState);
57
void socketDisconnected();
60
void loginFailed(const QString &error);
63
void startCoreSetup(const QVariantList &);
64
void coreSetupSuccess();
65
void coreSetupFailed(const QString &error);
67
void encrypted(); // relaying encrypted signal of the encapsulated SslSocket
69
void startInternalCore(ClientSyncer *syncer);
70
void connectToInternalCore(SignalProxy *proxy);
72
void handleIgnoreWarnings(bool permanently);
75
void connectToCore(const QVariantMap &);
76
void loginToCore(const QString &user, const QString &passwd);
77
void disconnectFromCore();
78
void useInternalCore();
80
inline void ignoreWarnings(bool permanently) { emit handleIgnoreWarnings(permanently); }
83
void coreSocketError(QAbstractSocket::SocketError);
85
void coreSocketConnected();
86
void coreSocketDisconnected();
88
void clientInitAck(const QVariantMap &msg);
91
void networkInitDone();
92
void checkSyncState();
94
void syncToCore(const QVariantMap &sessionState);
95
void internalSessionStateReceived(const QVariant &packedState);
96
void sessionStateReceived(const QVariantMap &state);
98
void connectionReady();
99
void doCoreSetup(const QVariant &setupData);
101
void setWarningsHandler(const char *slot);
102
void resetWarningsHandler();
103
void resetConnection();
106
void ignoreSslWarnings(bool permanently);
107
void sslSocketEncrypted();
108
void sslErrors(const QList<QSslError> &errors);
112
QPointer<QIODevice> _socket;
115
QVariantMap coreConnectionInfo;
116
QVariantMap _coreMsgBuffer;
118
QSet<QObject *> netsToSync;
121
QString coreInfoString(const QVariantMap &);