diff options
Diffstat (limited to 'src/knx/netip/qknxnetipsessionresponse.cpp')
-rw-r--r-- | src/knx/netip/qknxnetipsessionresponse.cpp | 53 |
1 files changed, 47 insertions, 6 deletions
diff --git a/src/knx/netip/qknxnetipsessionresponse.cpp b/src/knx/netip/qknxnetipsessionresponse.cpp index 7c01050..b9ea89e 100644 --- a/src/knx/netip/qknxnetipsessionresponse.cpp +++ b/src/knx/netip/qknxnetipsessionresponse.cpp @@ -184,6 +184,29 @@ QKnxNetIpSessionResponseProxy::Builder QKnxNetIpSessionResponseProxy::builder() \sa QKnxCryptographicEngine */ +class QKnxNetIpSessionResponseBuilderPrivate : public QSharedData +{ +public: + QKnxNetIpSessionResponseBuilderPrivate() = default; + ~QKnxNetIpSessionResponseBuilderPrivate() = default; + + qint32 m_id { -1 }; + QKnxByteArray m_publicKey; + QKnxByteArray m_authCode; +}; + +/*! + Creates a new empty session response builder object. +*/ +QKnxNetIpSessionResponseProxy::Builder::Builder() + : d_ptr(new QKnxNetIpSessionResponseBuilderPrivate) +{} + +/*! + Destroys the object and frees any allocated resources. +*/ +QKnxNetIpSessionResponseProxy::Builder::~Builder() = default; + /*! Sets the secure session ID of the KNXnet/IP session response frame to \a sessionId and returns a reference to the builder. @@ -191,7 +214,7 @@ QKnxNetIpSessionResponseProxy::Builder QKnxNetIpSessionResponseProxy::builder() QKnxNetIpSessionResponseProxy::Builder & QKnxNetIpSessionResponseProxy::Builder::setSecureSessionId(quint16 sessionId) { - m_id = sessionId; + d_ptr->m_id = sessionId; return *this; } @@ -203,7 +226,7 @@ QKnxNetIpSessionResponseProxy::Builder & QKnxNetIpSessionResponseProxy::Builder & QKnxNetIpSessionResponseProxy::Builder::setPublicKey(const QKnxByteArray &publicKey) { - m_publicKey = publicKey; + d_ptr->m_publicKey = publicKey; return *this; } @@ -215,7 +238,7 @@ QKnxNetIpSessionResponseProxy::Builder & QKnxNetIpSessionResponseProxy::Builder & QKnxNetIpSessionResponseProxy::Builder::setMessageAuthenticationCode(const QKnxByteArray &data) { - m_authCode = data; + d_ptr->m_authCode = data; return *this; } @@ -229,10 +252,28 @@ QKnxNetIpSessionResponseProxy::Builder & */ QKnxNetIpFrame QKnxNetIpSessionResponseProxy::Builder::create() const { - if (m_id < 0 || m_publicKey.size() != 32 || m_authCode.size() != 16) + if (d_ptr->m_id < 0 || d_ptr->m_publicKey.size() != 32 || d_ptr->m_authCode.size() != 16) return { QKnxNetIp::ServiceType::SessionResponse }; - return { QKnxNetIp::ServiceType::SessionResponse, QKnxUtils::QUint16::bytes(m_id) + m_publicKey - + m_authCode }; + + return { QKnxNetIp::ServiceType::SessionResponse, QKnxUtils::QUint16::bytes(d_ptr->m_id) + + d_ptr->m_publicKey + d_ptr->m_authCode }; +} + +/*! + Constructs a copy of \a other. +*/ +QKnxNetIpSessionResponseProxy::Builder::Builder(const Builder &other) + : d_ptr(other.d_ptr) +{} + +/*! + Assigns the specified \a other to this object. +*/ +QKnxNetIpSessionResponseProxy::Builder & + QKnxNetIpSessionResponseProxy::Builder::operator=(const Builder &other) +{ + d_ptr = other.d_ptr; + return *this; } QT_END_NAMESPACE |