Heart 1.3.842.34c2ab5
Heart is base back end library for your c++ Qt projects.
hostaddress.cpp
Go to the documentation of this file.
1/*
2 * Copyright (C) 2018-2024 QuasarApp.
3 * Distributed under the lgplv3 software license, see the accompanying
4 * Everyone is permitted to copy and distribute verbatim copies
5 * of this license document, but changing it is not allowed.
6*/
7
8
9#include "hostaddress.h"
10#include <QDataStream>
11#include <quasarapp.h>
12namespace QH {
13
17
18HostAddress::HostAddress(const QHostAddress &other, int port):
19 QHostAddress(other) {
21}
22
23HostAddress::HostAddress(const QString &other, int port):
24 QHostAddress(other) {
26}
27
28HostAddress::HostAddress(const SpecialAddress &other, int port):
29 QHostAddress(other) {
31}
32
34 operator=(other);
35}
36
37unsigned short HostAddress::port() const {
38 return _port;
39}
40
41void HostAddress::setPort(unsigned short port) {
42 _port = port;
43}
44
46 QHostAddress::operator=(*static_cast<const QHostAddress*>(&right));
47 setPort(right.port());
48
49 return *this;
50}
51
52bool HostAddress::isIP(const QString &address) {
53 return !QHostAddress{address}.isNull();
54}
55
57 return !isNull() && port();
58}
59
60QString HostAddress::toString() const {
61 return QHostAddress::toString() + ":" + QString::number(port());
62}
63
64QByteArray HostAddress::toBytes() const {
65 QByteArray res;
66 QDataStream stream(&res, QIODevice::WriteOnly);
67 operator <<(stream, *this);
68 return res;
69}
70
71bool HostAddress::fromBytes(const QByteArray &array) {
72 if (array.isEmpty())
73 return false;
74
75 QDataStream stream(array);
76 operator >>(stream, *this);
77 return true;
78}
79
80QDataStream &operator >>(QDataStream &stream, HostAddress &address) {
81 stream >> static_cast<QHostAddress&>(address);
82 stream >> address._port;
83
84 return stream;
85}
86
87QDataStream &operator <<(QDataStream &stream, const HostAddress &address) {
88
89 stream << static_cast<const QHostAddress&>(address);
90 stream << address._port;
91
92 return stream;
93}
94
95#define base(obj) static_cast<const QHostAddress*>(&obj)
96bool operator ==(const HostAddress &left, const HostAddress &right) {
97 return base(left)->operator==(*base(right)) && left.port() == right.port();
98}
99
100bool operator !=(const HostAddress &left, const HostAddress &right) {
101 return base(left)->operator!=(*base(right)) && left.port() != right.port();
102}
103
104uint qHash(const HostAddress &address) {
105
106 if (QHostAddress(address.toIPv4Address()).operator==(QHostAddress::LocalHost) ||
107 QHostAddress(address.toIPv6Address()).operator==(QHostAddress::LocalHostIPv6)) {
108 return qHash(QString("%1:%2").arg(address.toString()).arg(address.port()));
109 }
110
111 return qHash(*static_cast<const QHostAddress*>(&address));
112}
113
114}
The Host Address class this is wrapper of QHostAddress. Contains the NetworkAddress and network port.
Definition hostaddress.h:22
friend QDataStream & operator<<(QDataStream &stream, const HostAddress &address)
QByteArray toBytes() const
toBytes This method convert a network address to a byte array.
friend QDataStream & operator>>(QDataStream &stream, HostAddress &address)
HostAddress & operator=(const HostAddress &right)
unsigned short port() const
The port method return port of node.
QString toString() const
toString this method convert the Host Address value to string value.
void setPort(unsigned short port)
setPort This method set new port value.
bool isValid() const
isValid This method return true if the current network address is valid.
bool fromBytes(const QByteArray &array)
fromBytes This method applay array obejct. (conver a byte array to a newtwork address object)
static bool isIP(const QString &address)
isIP This method return true if the address is valid.
#define base(obj)
The QH namespace - QuasarApp Heart namespace. This namespace contains all classes of the Heart librar...
Definition heart.cpp:13
QDataStream & operator>>(QDataStream &stream, HostAddress &address)
bool operator!=(const DbAddress &left, const DbAddress &other)
Definition dbaddress.cpp:50
uint qHash(NodeCoonectionStatus status)
qHash - Simple hash function of NodeCoonectionStatus
bool operator==(const DbAddress &left, const DbAddress &other)
Definition dbaddress.cpp:27
QDataStream & operator<<(QDataStream &stream, const HostAddress &address)