X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fremotepeer.cpp;h=0541856b72c62a7bcbac854b226510f424e8af75;hp=c3ad24f01717f1eb3ef68bfc13fae30061ba6c2a;hb=c1cf157116de7fc3da96203aa6f03c38c7ebb650;hpb=30b159cb876a9495de42e9a3e70ca050516f0805 diff --git a/src/common/remotepeer.cpp b/src/common/remotepeer.cpp index c3ad24f0..0541856b 100644 --- a/src/common/remotepeer.cpp +++ b/src/common/remotepeer.cpp @@ -18,15 +18,14 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#include - #include #include +#include #ifdef HAVE_SSL -# include +# include #else -# include +# include #endif #include "remotepeer.h" @@ -34,17 +33,18 @@ using namespace Protocol; -const quint32 maxMessageSize = 64 * 1024 * 1024; // This is uncompressed size. 64 MB should be enough for any sort of initData or backlog chunk - -RemotePeer::RemotePeer(::AuthHandler *authHandler, QTcpSocket *socket, Compressor::CompressionLevel level, QObject *parent) - : Peer(authHandler, parent), - _socket(socket), - _compressor(new Compressor(socket, level, this)), - _signalProxy(nullptr), - _heartBeatTimer(new QTimer(this)), - _heartBeatCount(0), - _lag(0), - _msgSize(0) +const quint32 maxMessageSize = 64 * 1024 + * 1024; // This is uncompressed size. 64 MB should be enough for any sort of initData or backlog chunk + +RemotePeer::RemotePeer(::AuthHandler* authHandler, QTcpSocket* socket, Compressor::CompressionLevel level, QObject* parent) + : Peer(authHandler, parent) + , _socket(socket) + , _compressor(new Compressor(socket, level, this)) + , _signalProxy(nullptr) + , _heartBeatTimer(new QTimer(this)) + , _heartBeatCount(0) + , _lag(0) + , _msgSize(0) { socket->setParent(this); connect(socket, &QAbstractSocket::stateChanged, this, &RemotePeer::onSocketStateChanged); @@ -52,7 +52,7 @@ RemotePeer::RemotePeer(::AuthHandler *authHandler, QTcpSocket *socket, Compresso connect(socket, &QAbstractSocket::disconnected, this, &Peer::disconnected); #ifdef HAVE_SSL - auto *sslSocket = qobject_cast(socket); + auto* sslSocket = qobject_cast(socket); if (sslSocket) { connect(sslSocket, &QSslSocket::encrypted, this, [this]() { emit secureStateChanged(true); }); } @@ -64,7 +64,6 @@ RemotePeer::RemotePeer(::AuthHandler *authHandler, QTcpSocket *socket, Compresso connect(_heartBeatTimer, &QTimer::timeout, this, &RemotePeer::sendHeartBeat); } - void RemotePeer::onSocketStateChanged(QAbstractSocket::SocketState state) { if (state == QAbstractSocket::ClosingState) { @@ -72,19 +71,16 @@ void RemotePeer::onSocketStateChanged(QAbstractSocket::SocketState state) } } - void RemotePeer::onSocketError(QAbstractSocket::SocketError error) { emit socketError(error, socket()->errorString()); } - void RemotePeer::onCompressionError(Compressor::Error error) { close(QString("Compression error %1").arg(error)); } - QString RemotePeer::description() const { if (socket()) @@ -109,14 +105,12 @@ quint16 RemotePeer::port() const return 0; } - -::SignalProxy *RemotePeer::signalProxy() const +::SignalProxy* RemotePeer::signalProxy() const { return _signalProxy; } - -void RemotePeer::setSignalProxy(::SignalProxy *proxy) +void RemotePeer::setSignalProxy(::SignalProxy* proxy) { if (proxy == _signalProxy) return; @@ -140,10 +134,9 @@ void RemotePeer::setSignalProxy(::SignalProxy *proxy) } } - void RemotePeer::changeHeartBeatInterval(int secs) { - if(secs <= 0) + if (secs <= 0) _heartBeatTimer->stop(); else { _heartBeatTimer->setInterval(secs * 1000); @@ -151,26 +144,23 @@ void RemotePeer::changeHeartBeatInterval(int secs) } } - int RemotePeer::lag() const { return _lag; } - -QTcpSocket *RemotePeer::socket() const +QTcpSocket* RemotePeer::socket() const { return _socket; } - bool RemotePeer::isSecure() const { if (socket()) { if (isLocal()) return true; #ifdef HAVE_SSL - auto *sslSocket = qobject_cast(socket()); + auto* sslSocket = qobject_cast(socket()); if (sslSocket && sslSocket->isEncrypted()) return true; #endif @@ -178,7 +168,6 @@ bool RemotePeer::isSecure() const return false; } - bool RemotePeer::isLocal() const { if (socket()) { @@ -188,14 +177,12 @@ bool RemotePeer::isLocal() const return false; } - bool RemotePeer::isOpen() const { return socket() && socket()->state() == QTcpSocket::ConnectedState; } - -void RemotePeer::close(const QString &reason) +void RemotePeer::close(const QString& reason) { if (!reason.isEmpty()) { qWarning() << "Disconnecting:" << reason; @@ -206,7 +193,6 @@ void RemotePeer::close(const QString &reason) } } - void RemotePeer::onReadyRead() { QByteArray msg; @@ -221,8 +207,7 @@ void RemotePeer::onReadyRead() } } - -bool RemotePeer::readMessage(QByteArray &msg) +bool RemotePeer::readMessage(QByteArray& msg) { if (_msgSize == 0) { if (_compressor->bytesAvailable() < 4) @@ -259,33 +244,29 @@ bool RemotePeer::readMessage(QByteArray &msg) return true; } - -void RemotePeer::writeMessage(const QByteArray &msg) +void RemotePeer::writeMessage(const QByteArray& msg) { auto size = qToBigEndian(msg.size()); _compressor->write((const char*)&size, 4, Compressor::NoFlush); _compressor->write(msg.constData(), msg.size()); } - -void RemotePeer::handle(const HeartBeat &heartBeat) +void RemotePeer::handle(const HeartBeat& heartBeat) { dispatch(HeartBeatReply(heartBeat.timestamp)); } - -void RemotePeer::handle(const HeartBeatReply &heartBeatReply) +void RemotePeer::handle(const HeartBeatReply& heartBeatReply) { _heartBeatCount = 0; emit lagUpdated(heartBeatReply.timestamp.msecsTo(QDateTime::currentDateTime().toUTC()) / 2); } - void RemotePeer::sendHeartBeat() { if (signalProxy()->maxHeartBeatCount() > 0 && _heartBeatCount >= signalProxy()->maxHeartBeatCount()) { - qWarning() << "Disconnecting peer:" << description() - << "(didn't receive a heartbeat for over" << _heartBeatCount *_heartBeatTimer->interval() / 1000 << "seconds)"; + qWarning() << "Disconnecting peer:" << description() << "(didn't receive a heartbeat for over" + << _heartBeatCount * _heartBeatTimer->interval() / 1000 << "seconds)"; socket()->close(); _heartBeatTimer->stop(); return;