/***************************************************************************
- * Copyright (C) 2005-2016 by the Quassel Project *
+ * Copyright (C) 2005-2020 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#pragma once
+#include "client-export.h"
+
#include <QNetworkConfigurationManager>
#include <QPointer>
+#include <QSslSocket>
#include <QTimer>
-#ifdef HAVE_SSL
-# include <QSslSocket>
-#else
-# include <QTcpSocket>
-#endif
-
#include "coreaccount.h"
#include "remotepeer.h"
#include "types.h"
class Peer;
class SignalProxy;
-class CoreConnection : public QObject
+class CLIENT_EXPORT CoreConnection : public QObject
{
Q_OBJECT
public:
- enum ConnectionState {
+ enum ConnectionState
+ {
Disconnected,
Connecting,
Connected,
Synchronized
};
- CoreConnection(QObject *parent = 0);
+ CoreConnection(QObject* parent = nullptr);
void init();
bool connectToCore(AccountId = 0);
void reconnectToCore();
void disconnectFromCore();
+ void internalSessionStateReceived(const Protocol::SessionState& sessionState);
- void setupCore(const Protocol::SetupData &setupData);
+ void setupCore(const Protocol::SetupData& setupData);
signals:
void stateChanged(CoreConnection::ConnectionState);
void synchronized();
void lagUpdated(int msecs);
- void connectionError(const QString &errorMsg);
- void connectionErrorPopup(const QString &errorMsg);
- void connectionMsg(const QString &msg);
+ void connectionError(const QString& errorMsg);
+ void connectionErrorPopup(const QString& errorMsg);
+ void connectionMsg(const QString& msg);
void disconnected();
void progressRangeChanged(int minimum, int maximum);
void progressValueChanged(int value);
- void progressTextChanged(const QString &);
+ void progressTextChanged(const QString&);
- void startCoreSetup(const QVariantList &backendInfo, const QVariantList &authenticatorInfo);
+ void startCoreSetup(const QVariantList& backendInfo, const QVariantList& authenticatorInfo);
void coreSetupSuccess();
- void coreSetupFailed(const QString &error);
+ void coreSetupFailed(const QString& error);
- void startInternalCore();
- void connectToInternalCore(InternalPeer *connection);
+ void connectToInternalCore(QPointer<InternalPeer> connection);
// These signals MUST be handled synchronously!
- void userAuthenticationRequired(CoreAccount *, bool *valid, const QString &errorMessage = QString());
- void handleNoSslInClient(bool *accepted);
- void handleNoSslInCore(bool *accepted);
-#ifdef HAVE_SSL
- void handleSslErrors(const QSslSocket *socket, bool *accepted, bool *permanently);
-#endif
+ void userAuthenticationRequired(CoreAccount*, bool* valid, const QString& errorMessage = QString());
+ void handleNoSslInClient(bool* accepted);
+ void handleNoSslInCore(bool* accepted);
+ void handleSslErrors(const QSslSocket* socket, bool* accepted, bool* permanently);
private slots:
void connectToCurrentAccount();
- void disconnectFromCore(const QString &errorString, bool wantReconnect = true);
+ void disconnectFromCore(const QString& errorString, bool wantReconnect = true);
- void coreSocketError(QAbstractSocket::SocketError error, const QString &errorString);
+ void coreSocketError(QAbstractSocket::SocketError error, const QString& errorString);
void coreSocketDisconnected();
// for sync progress
void networkInitDone();
void checkSyncState();
- 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 loginToCore(const QString& user, const QString& password, bool remember); // for config wizard
+ void syncToCore(const Protocol::SessionState& sessionState);
void resetConnection(bool wantReconnect = false);
void onConnectionReady();
- void onLoginSuccessful(const CoreAccount &account);
- void onHandshakeComplete(RemotePeer *peer, const Protocol::SessionState &sessionState);
+ void onLoginSuccessful(const CoreAccount& account);
+ void onHandshakeComplete(RemotePeer* peer, const Protocol::SessionState& sessionState);
void updateProgress(int value, int maximum);
- void setProgressText(const QString &text);
+ void setProgressText(const QString& text);
void setProgressValue(int value);
void setProgressMinimum(int minimum);
void setProgressMaximum(int maximum);
void setState(ConnectionState state);
- void networkDetectionModeChanged(const QVariant &mode);
- void pingTimeoutIntervalChanged(const QVariant &interval);
- void reconnectIntervalChanged(const QVariant &interval);
+ void networkDetectionModeChanged(const QVariant& mode);
+ void pingTimeoutIntervalChanged(const QVariant& interval);
+ void reconnectIntervalChanged(const QVariant& interval);
void reconnectTimeout();
void onlineStateChanged(bool isOnline);
private:
QPointer<ClientAuthHandler> _authHandler;
QPointer<Peer> _peer;
- ConnectionState _state;
+ ConnectionState _state{Disconnected};
QTimer _reconnectTimer;
- bool _wantReconnect;
- bool _wasReconnect;
+ bool _wantReconnect{false};
+ bool _wasReconnect{false};
- QSet<QObject *> _netsToSync;
+ QSet<QObject*> _netsToSync;
int _numNetsToSync;
- int _progressMinimum, _progressMaximum, _progressValue;
+ int _progressMinimum{0}, _progressMaximum{-1}, _progressValue{-1};
QString _progressText;
- bool _resetting;
+ bool _resetting{false};
CoreAccount _account;
- CoreAccountModel *accountModel() const;
+ CoreAccountModel* accountModel() const;
QPointer<QNetworkConfigurationManager> _qNetworkConfigurationManager;
friend class CoreConfigWizard;
};
-
Q_DECLARE_METATYPE(CoreConnection::ConnectionState)
// Inlines
-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; }
+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;
+}