Browse Source

Implement proper equal operators

adaptive-webui-19844
Chocobo1 5 years ago
parent
commit
94f7a095bb
No known key found for this signature in database
GPG Key ID: 210D9C873253A68C
  1. 20
      src/base/bittorrent/tracker.cpp
  2. 5
      src/base/bittorrent/tracker.h
  3. 14
      src/base/tristatebool.h

20
src/base/bittorrent/tracker.cpp

@ -43,16 +43,6 @@ static const int ANNOUNCE_INTERVAL = 1800; // 30min
using namespace BitTorrent; using namespace BitTorrent;
// Peer // Peer
bool Peer::operator!=(const Peer &other) const
{
return uid() != other.uid();
}
bool Peer::operator==(const Peer &other) const
{
return uid() == other.uid();
}
QString Peer::uid() const QString Peer::uid() const
{ {
return ip.toString() + ':' + QString::number(port); return ip.toString() + ':' + QString::number(port);
@ -69,6 +59,16 @@ lt::entry Peer::toEntry(const bool noPeerId) const
return lt::entry(peerMap); return lt::entry(peerMap);
} }
bool BitTorrent::operator==(const Peer &left, const Peer &right)
{
return left.uid() == right.uid();
}
bool BitTorrent::operator!=(const Peer &left, const Peer &right)
{
return !(left == right);
}
// Tracker // Tracker
Tracker::Tracker(QObject *parent) Tracker::Tracker(QObject *parent)

5
src/base/bittorrent/tracker.h

@ -52,12 +52,13 @@ namespace BitTorrent
QByteArray peerId; QByteArray peerId;
int port; int port;
bool operator!=(const Peer &other) const;
bool operator==(const Peer &other) const;
QString uid() const; QString uid() const;
lt::entry toEntry(bool noPeerId) const; lt::entry toEntry(bool noPeerId) const;
}; };
bool operator==(const Peer &left, const Peer &right);
bool operator!=(const Peer &left, const Peer &right);
struct TrackerAnnounceRequest struct TrackerAnnounceRequest
{ {
QByteArray infoHash; QByteArray infoHash;

14
src/base/tristatebool.h

@ -50,18 +50,18 @@ public:
TriStateBool &operator=(const TriStateBool &other) = default; // add constexpr when using C++17 TriStateBool &operator=(const TriStateBool &other) = default; // add constexpr when using C++17
constexpr bool operator==(const TriStateBool &other) const constexpr friend bool operator==(const TriStateBool &left, const TriStateBool &right)
{ {
return (m_value == other.m_value); return (left.m_value == right.m_value);
}
constexpr bool operator!=(const TriStateBool &other) const
{
return !operator==(other);
} }
private: private:
signed char m_value = -1; // Undefined by default signed char m_value = -1; // Undefined by default
}; };
constexpr bool operator!=(const TriStateBool &left, const TriStateBool &right)
{
return !(left == right);
}
#endif // TRISTATEBOOL_H #endif // TRISTATEBOOL_H

Loading…
Cancel
Save