From b63c2714318075d35188106afb0362fefc8ea165 Mon Sep 17 00:00:00 2001 From: Anton Usmansky Date: Wed, 26 Jun 2024 19:05:40 +0300 Subject: [PATCH] feat: possibility to get node id of the unsolicited message sender (#33704) --- src/messaging/ExchangeDelegate.h | 14 ++++++++++++-- src/messaging/ExchangeMgr.cpp | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/messaging/ExchangeDelegate.h b/src/messaging/ExchangeDelegate.h index 97a5a0adaebb42..cf2eea8910954f 100644 --- a/src/messaging/ExchangeDelegate.h +++ b/src/messaging/ExchangeDelegate.h @@ -140,7 +140,7 @@ class DLL_EXPORT ExchangeDelegate /** * @brief * This class handles unsolicited messages. The implementation can select an exchange delegate to use based on the payload header - * of the incoming message. + * of the incoming message or its session. */ class DLL_EXPORT UnsolicitedMessageHandler { @@ -158,9 +158,19 @@ class DLL_EXPORT UnsolicitedMessageHandler * * @param[in] payloadHeader A reference to the PayloadHeader object for the unsolicited message. The protocol and message * type of this header match the UnsolicitedMessageHandler. + * @param[in] session A reference to the session where unsolicited message was received. * @param[out] newDelegate A new exchange delegate to be used by the new exchange created to handle the message. */ - virtual CHIP_ERROR OnUnsolicitedMessageReceived(const PayloadHeader & payloadHeader, ExchangeDelegate *& newDelegate) = 0; + virtual CHIP_ERROR OnUnsolicitedMessageReceived(const PayloadHeader & payloadHeader, const SessionHandle & session, + ExchangeDelegate *& newDelegate) + { + return OnUnsolicitedMessageReceived(payloadHeader, newDelegate); + } + + virtual CHIP_ERROR OnUnsolicitedMessageReceived(const PayloadHeader & payloadHeader, ExchangeDelegate *& newDelegate) + { + return CHIP_ERROR_NOT_IMPLEMENTED; + } /** * @brief diff --git a/src/messaging/ExchangeMgr.cpp b/src/messaging/ExchangeMgr.cpp index c60b948c87f814..bf92fa22f54985 100644 --- a/src/messaging/ExchangeMgr.cpp +++ b/src/messaging/ExchangeMgr.cpp @@ -320,7 +320,7 @@ void ExchangeManager::OnMessageReceived(const PacketHeader & packetHeader, const ExchangeDelegate * delegate = nullptr; // Fetch delegate from the handler - CHIP_ERROR err = matchingUMH->Handler->OnUnsolicitedMessageReceived(payloadHeader, delegate); + CHIP_ERROR err = matchingUMH->Handler->OnUnsolicitedMessageReceived(payloadHeader, session, delegate); if (err != CHIP_NO_ERROR) { // Using same error message for all errors to reduce code size.