/***************************************************************************
- * Copyright (C) 2005-2015 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 *
: Peer(authHandler, parent),
_socket(socket),
_compressor(new Compressor(socket, level, this)),
- _signalProxy(0),
+ _signalProxy(nullptr),
_heartBeatTimer(new QTimer(this)),
_heartBeatCount(0),
_lag(0),
connect(socket, SIGNAL(disconnected()), SIGNAL(disconnected()));
#ifdef HAVE_SSL
- QSslSocket *sslSocket = qobject_cast<QSslSocket *>(socket);
+ auto *sslSocket = qobject_cast<QSslSocket *>(socket);
if (sslSocket)
connect(sslSocket, SIGNAL(encrypted()), SIGNAL(secureStateChanged()));
#endif
return QString();
}
+QString RemotePeer::address() const
+{
+ if (socket())
+ return socket()->peerAddress().toString();
+
+ return QString();
+}
+
+quint16 RemotePeer::port() const
+{
+ if (socket())
+ return socket()->peerPort();
+
+ return 0;
+}
+
::SignalProxy *RemotePeer::signalProxy() const
{
if (!proxy) {
_heartBeatTimer->stop();
- disconnect(signalProxy(), 0, this, 0);
- _signalProxy = 0;
+ disconnect(signalProxy(), nullptr, this, nullptr);
+ _signalProxy = nullptr;
if (isOpen())
close();
}
if (isLocal())
return true;
#ifdef HAVE_SSL
- QSslSocket *sslSocket = qobject_cast<QSslSocket *>(socket());
+ auto *sslSocket = qobject_cast<QSslSocket *>(socket());
if (sslSocket && sslSocket->isEncrypted())
return true;
#endif
void RemotePeer::onReadyRead()
{
QByteArray msg;
- while (readMessage(msg))
+ while (readMessage(msg)) {
+ if (SignalProxy::current())
+ SignalProxy::current()->setSourcePeer(this);
+
processMessage(msg);
+
+ if (SignalProxy::current())
+ SignalProxy::current()->setSourcePeer(nullptr);
+ }
}
void RemotePeer::writeMessage(const QByteArray &msg)
{
- quint32 size = qToBigEndian<quint32>(msg.size());
+ auto size = qToBigEndian<quint32>(msg.size());
_compressor->write((const char*)&size, 4, Compressor::NoFlush);
_compressor->write(msg.constData(), msg.size());
}
void RemotePeer::handle(const HeartBeatReply &heartBeatReply)
{
_heartBeatCount = 0;
-#if QT_VERSION >= 0x040700
emit lagUpdated(heartBeatReply.timestamp.msecsTo(QDateTime::currentDateTime().toUTC()) / 2);
-#else
- emit lagUpdated(heartBeatReply.timestamp.time().msecsTo(QDateTime::currentDateTime().toUTC().time()) / 2);
-#endif
}