/*! * \brief Information needed to display a remote device in the GUI and to open * a websocket connection to it. * * \copyright Copyright (c) 2017-2018 Governikus GmbH & Co. KG, Germany */ #pragma once #include "messages/IfdVersion.h" #include #include #include #include namespace governikus { class Discovery; class RemoteDeviceDescriptor { private: class RemoteDeviceDescriptorData : public QSharedData { public: RemoteDeviceDescriptorData(const QString& pIfdName, const QString& pIfdId, const QVector& pApiVersions, const QUrl& pUrl); virtual ~RemoteDeviceDescriptorData(); const QString mIfdName; const QString mIfdId; const QVector mApiVersions; const QUrl mUrl; bool operator==(const RemoteDeviceDescriptorData& pOther) const; }; static RemoteDeviceDescriptorData* createRemoteDeviceDescriptorData(const QSharedPointer& pMsg, const QHostAddress& pHostAddress, QAbstractSocket::NetworkLayerProtocol pRequiredProtocol); const QSharedDataPointer d; public: RemoteDeviceDescriptor() = default; RemoteDeviceDescriptor(const QSharedPointer& pDiscovery, const QHostAddress& pHostAddress, QAbstractSocket::NetworkLayerProtocol pRequiredProtocol = QAbstractSocket::IPv4Protocol); ~RemoteDeviceDescriptor() = default; const QString& getIfdName() const; const QString& getIfdId() const; const QVector& getApiVersions() const; bool isSupported() const; const QUrl& getUrl() const; bool isNull() const; bool operator==(const RemoteDeviceDescriptor& pOther) const; }; inline QDebug operator<<(QDebug pDbg, const RemoteDeviceDescriptor& pRemoteDeviceDescriptor) { QDebugStateSaver saver(pDbg); return pDbg.noquote().nospace() << "RemoteDevice(" << pRemoteDeviceDescriptor.getIfdName() << ", " << pRemoteDeviceDescriptor.getIfdId() << ", " << pRemoteDeviceDescriptor.getUrl() << ", " << pRemoteDeviceDescriptor.getApiVersions() << ")"; } } /* namespace governikus */