X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fcoreconnection.h;h=69b4c9e56dbead99f52b4dfce127e29565e5e33f;hp=0b64e9b5ba697d2ec6b343c62d805deed97fa422;hb=c27d5bfbe80bfeb583a25404f4ccee4b70b010e0;hpb=5b686746c880e5cda6d5de3e08180ea4332ff222 diff --git a/src/client/coreconnection.h b/src/client/coreconnection.h index 0b64e9b5..69b4c9e5 100644 --- a/src/client/coreconnection.h +++ b/src/client/coreconnection.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2012 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -18,13 +18,11 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#ifndef CORECONNECTION_H_ -#define CORECONNECTION_H_ +#pragma once -// TODO: support system application proxy (new in Qt 4.6) - -#include "QPointer" -#include "QTimer" +#include +#include +#include #ifdef HAVE_SSL # include @@ -32,15 +30,15 @@ # include #endif -#ifdef HAVE_KDE -# include -#endif - #include "coreaccount.h" +#include "remotepeer.h" #include "types.h" +class ClientAuthHandler; class CoreAccountModel; +class InternalPeer; class Network; +class Peer; class SignalProxy; class CoreConnection : public QObject @@ -56,34 +54,34 @@ public: Synchronized }; - CoreConnection(CoreAccountModel *model, QObject *parent = 0); + CoreConnection(QObject *parent = 0); void init(); - inline bool isConnected() const; - inline ConnectionState state() const; - inline CoreAccount currentAccount() const; + bool isConnected() const; + ConnectionState state() const; + CoreAccount currentAccount() const; bool isEncrypted() const; bool isLocalConnection() const; - inline int progressMinimum() const; - inline int progressMaximum() const; - inline int progressValue() const; - inline QString progressText() const; + int progressMinimum() const; + int progressMaximum() const; + int progressValue() const; + QString progressText() const; //! Check if we consider the last connect as reconnect - inline bool wasReconnect() const { return _wasReconnect; } + bool wasReconnect() const { return _wasReconnect; } -#ifdef HAVE_SSL - inline const QSslSocket *sslSocket() const; -#endif + QPointer peer() const; public slots: bool connectToCore(AccountId = 0); void reconnectToCore(); void disconnectFromCore(); + void setupCore(const Protocol::SetupData &setupData); + signals: void stateChanged(CoreConnection::ConnectionState); void encrypted(bool isEncrypted = true); @@ -92,7 +90,6 @@ signals: void connectionError(const QString &errorMsg); void connectionErrorPopup(const QString &errorMsg); - void connectionWarnings(const QStringList &warnings); void connectionMsg(const QString &msg); void disconnected(); @@ -100,12 +97,11 @@ signals: void progressValueChanged(int value); void progressTextChanged(const QString &); - void startCoreSetup(const QVariantList &); + void startCoreSetup(const QVariantList &backendInfo, const QVariantList &authenticatorInfo); void coreSetupSuccess(); void coreSetupFailed(const QString &error); - void startInternalCore(); - void connectToInternalCore(SignalProxy *proxy); + void connectToInternalCore(QPointer connection); // These signals MUST be handled synchronously! void userAuthenticationRequired(CoreAccount *, bool *valid, const QString &errorMessage = QString()); @@ -119,31 +115,22 @@ private slots: void connectToCurrentAccount(); void disconnectFromCore(const QString &errorString, bool wantReconnect = true); - void socketStateChanged(QAbstractSocket::SocketState); - void coreSocketError(QAbstractSocket::SocketError); - void coreHasData(); - void coreSocketConnected(); + void coreSocketError(QAbstractSocket::SocketError error, const QString &errorString); 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 loginToCore(const QString &user, const QString &password, bool remember); // for config wizard + void syncToCore(const Protocol::SessionState &sessionState); + void internalSessionStateReceived(const Protocol::SessionState &sessionState); void resetConnection(bool wantReconnect = false); - void connectionReady(); - - void loginToCore(const QString &user, const QString &password, bool remember); // for config wizard - void loginToCore(const QString &previousError = QString()); - void loginSuccess(); - void loginFailed(const QString &errorMessage); - void doCoreSetup(const QVariant &setupData); + void onConnectionReady(); + void onLoginSuccessful(const CoreAccount &account); + void onHandshakeComplete(RemotePeer *peer, const Protocol::SessionState &sessionState); void updateProgress(int value, int maximum); void setProgressText(const QString &text); @@ -151,45 +138,35 @@ private slots: void setProgressMinimum(int minimum); void setProgressMaximum(int maximum); - void setState(QAbstractSocket::SocketState socketState); void setState(ConnectionState state); -#ifdef HAVE_SSL - void sslSocketEncrypted(); - void sslErrors(); -#endif - void networkDetectionModeChanged(const QVariant &mode); void pingTimeoutIntervalChanged(const QVariant &interval); void reconnectIntervalChanged(const QVariant &interval); void reconnectTimeout(); -#ifdef HAVE_KDE - void solidNetworkStatusChanged(Solid::Networking::Status status); -#endif + void onlineStateChanged(bool isOnline); private: - CoreAccountModel *_model; - CoreAccount _account; - QVariantMap _coreMsgBuffer; - - QPointer _socket; - quint32 _blockSize; + QPointer _authHandler; + QPointer _peer; ConnectionState _state; QTimer _reconnectTimer; bool _wantReconnect; + bool _wasReconnect; QSet _netsToSync; int _numNetsToSync; int _progressMinimum, _progressMaximum, _progressValue; QString _progressText; - QString _coreInfoString(const QVariantMap &); - bool _wasReconnect; - bool _requestedDisconnect; + bool _resetting; + + CoreAccount _account; + CoreAccountModel *accountModel() const; - inline CoreAccountModel *accountModel() const; + QPointer _qNetworkConfigurationManager; friend class CoreConfigWizard; }; @@ -198,18 +175,11 @@ private: Q_DECLARE_METATYPE(CoreConnection::ConnectionState) // Inlines -int CoreConnection::progressMinimum() const { return _progressMinimum; } -int CoreConnection::progressMaximum() const { return _progressMaximum; } -int CoreConnection::progressValue() const { return _progressValue; } -QString CoreConnection::progressText() const { return _progressText; } - -CoreConnection::ConnectionState CoreConnection::state() const { return _state; } -bool CoreConnection::isConnected() const { return state() >= Connected; } -CoreAccount CoreConnection::currentAccount() const { return _account; } -CoreAccountModel *CoreConnection::accountModel() const { return _model; } - -#ifdef HAVE_SSL -const QSslSocket *CoreConnection::sslSocket() const { return qobject_cast(_socket); } -#endif - -#endif +inline int CoreConnection::progressMinimum() const { return _progressMinimum; } +inline int CoreConnection::progressMaximum() const { return _progressMaximum; } +inline int CoreConnection::progressValue() const { return _progressValue; } +inline QString CoreConnection::progressText() const { return _progressText; } + +inline CoreConnection::ConnectionState CoreConnection::state() const { return _state; } +inline bool CoreConnection::isConnected() const { return state() >= Connected; } +inline CoreAccount CoreConnection::currentAccount() const { return _account; }