summaryrefslogtreecommitdiffstats
path: root/src/knx/netip/qknxnetipsessionresponse.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/knx/netip/qknxnetipsessionresponse.cpp')
-rw-r--r--src/knx/netip/qknxnetipsessionresponse.cpp53
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