/***************************************************************************
- * Copyright (C) 2009 by the Quassel Project *
+ * Copyright (C) 2005-2013 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
#ifndef CORECONNECTION_H_
#endif
#include "coreaccount.h"
+#include "remotepeer.h"
#include "types.h"
class CoreAccountModel;
+class InternalPeer;
class Network;
+class Peer;
class SignalProxy;
class CoreConnection : public QObject
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;
+ const QSslSocket *sslSocket() const;
#endif
public slots:
void coreSetupFailed(const QString &error);
void startInternalCore();
- void connectToInternalCore(SignalProxy *proxy);
+ void connectToInternalCore(InternalPeer *connection);
// These signals MUST be handled synchronously!
void userAuthenticationRequired(CoreAccount *, bool *valid, const QString &errorMessage = QString());
void socketStateChanged(QAbstractSocket::SocketState);
void coreSocketError(QAbstractSocket::SocketError);
- void coreHasData();
+ void coreHasData(const QVariant &item);
void coreSocketConnected();
void coreSocketDisconnected();
CoreAccount _account;
QVariantMap _coreMsgBuffer;
- QPointer<QAbstractSocket> _socket;
- quint32 _blockSize;
+ QPointer<QTcpSocket> _socket;
+ QPointer<Peer> _peer;
ConnectionState _state;
QTimer _reconnectTimer;
bool _wantReconnect;
+ bool _wasReconnect;
QSet<QObject *> _netsToSync;
int _numNetsToSync;
QString _progressText;
QString _coreInfoString(const QVariantMap &);
- bool _wasReconnect;
- bool _requestedDisconnect;
+ bool _resetting;
inline CoreAccountModel *accountModel() const;
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; }
+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; }
-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; }
+inline CoreConnection::ConnectionState CoreConnection::state() const { return _state; }
+inline bool CoreConnection::isConnected() const { return state() >= Connected; }
+inline CoreAccount CoreConnection::currentAccount() const { return _account; }
+inline CoreAccountModel *CoreConnection::accountModel() const { return _model; }
#ifdef HAVE_SSL
-const QSslSocket *CoreConnection::sslSocket() const { return qobject_cast<QSslSocket *>(_socket); }
+inline const QSslSocket *CoreConnection::sslSocket() const { return qobject_cast<QSslSocket *>(_socket); }
#endif
#endif