Files
pay/NetPeer.cpp
T

124 lines
3.1 KiB
C++
Raw Permalink Normal View History

2020-05-24 13:20:03 +02:00
/*
* This file is part of the Flowee project
2021-02-04 18:54:05 +01:00
* Copyright (C) 2020-2021 Tom Zander <tom@flowee.org>
2020-05-24 13:20:03 +02:00
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "NetPeer.h"
NetPeer::NetPeer(int connectionId, const QString &userAgent, int startHeight, PeerAddress address, QObject *parent)
: QObject(parent),
m_userAgent(userAgent),
m_connectionId(connectionId),
m_startHeight(startHeight),
m_address(address)
{
}
QString NetPeer::userAgent() const
{
return m_userAgent;
}
int NetPeer::connectionId() const
{
return m_connectionId;
}
int NetPeer::startHeight() const
{
return m_startHeight;
}
int NetPeer::banScore() const
{
return m_address.punishment();
}
uint16_t NetPeer::segmentId() const
{
return m_address.segment();
}
2020-05-24 13:20:03 +02:00
QString NetPeer::address() const
{
2021-02-04 18:54:05 +01:00
QString answer;
const auto &ep = m_address.peerAddress();
if (ep.ipAddress.is_unspecified())
answer = QString::fromStdString(ep.hostname);
else
answer = QString::fromStdString(ep.ipAddress.to_string());
answer += QString(":%1").arg(ep.announcePort);
return answer;
2020-05-24 13:20:03 +02:00
}
void NetPeer::notifyPunishmentChanged()
{
emit banScoreChanged();
}
2021-07-30 10:52:09 +02:00
void NetPeer::setHeadersReceived(bool received)
{
if (received == m_headersReceived)
return;
m_headersReceived = received;
emit headersReceivedChanged();
}
bool NetPeer::headersReceived() const
{
return m_headersReceived;
}
bool NetPeer::relaysTransactions() const
{
return m_relaysTransactions;
}
void NetPeer::setRelaysTransactions(bool newRelaysTransactions)
{
if (m_relaysTransactions == newRelaysTransactions)
return;
m_relaysTransactions = newRelaysTransactions;
emit relaysTransactionsChanged();
}
QStringList NetPeer::services() const
{
QStringList answer;
if (m_services & 1)
answer << QLatin1String("NETWORK");
if (m_services & (1 << 2))
answer << QLatin1String("BLOOM");
if (m_services & (1 << 4))
answer << QLatin1String("XTHIN");
if (m_services & (1 << 5))
answer << QLatin1String("CASH");
if (m_services & (1 << 8))
answer << QLatin1String("CF");
if (m_services & (1 << 10))
answer << QLatin1String("NETWORK_LIMITED");
if (m_services & (1 << 11)) // obsolete, but still used
answer << QLatin1String("EXTVERSION");
return answer;
}
void NetPeer::setServices(uint64_t services)
{
if (m_services == services)
return;
m_services = services;
emit servicesChanged();
}