From fff9f19c27b427ef89d40aec40e97b86069e6284 Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Wed, 1 May 2024 16:15:38 -0400 Subject: [PATCH] Replace `Dispatch event` with `NotifySessionHang` on sessions. Only a single event was ever dispatched and the pattern of passing in pointers to member methods was not used anywhere else and resulted in fairly unique code. Spelling out the `NotifySessionHang` explicitly seems to simplify maintainability. --- src/messaging/ExchangeContext.cpp | 2 +- src/messaging/ReliableMessageMgr.cpp | 2 +- src/transport/Session.h | 8 ++++---- src/transport/SessionDelegate.h | 2 -- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/messaging/ExchangeContext.cpp b/src/messaging/ExchangeContext.cpp index bca044d91f230d..554e5fbce9482d 100644 --- a/src/messaging/ExchangeContext.cpp +++ b/src/messaging/ExchangeContext.cpp @@ -485,7 +485,7 @@ void ExchangeContext::NotifyResponseTimeout(bool aCloseIfNeeded) { mSession->AsSecureSession()->MarkAsDefunct(); } - mSession->DispatchSessionEvent(&SessionDelegate::OnSessionHang); + mSession->NotifySessionHang(); } } diff --git a/src/messaging/ReliableMessageMgr.cpp b/src/messaging/ReliableMessageMgr.cpp index 3827fd096d5072..17049069b71430 100644 --- a/src/messaging/ReliableMessageMgr.cpp +++ b/src/messaging/ReliableMessageMgr.cpp @@ -158,7 +158,7 @@ void ReliableMessageMgr::ExecuteActions() { session->AsSecureSession()->MarkAsDefunct(); } - session->DispatchSessionEvent(&SessionDelegate::OnSessionHang); + session->NotifySessionHang(); } // Do not StartTimer, we will schedule the timer at the end of the timer handler. diff --git a/src/transport/Session.h b/src/transport/Session.h index d9840ec3ee33f1..4c760211f1ff11 100644 --- a/src/transport/Session.h +++ b/src/transport/Session.h @@ -115,7 +115,7 @@ class SessionHolder : public IntrusiveListNodeBase<> Transport::Session * operator->() const { return &mSession.Value().Get(); } // There is not delegate, nothing to do here - virtual void DispatchSessionEvent(SessionDelegate::Event event) {} + virtual void OnSessionHang() {} protected: // Helper for use by the Grab methods. @@ -147,7 +147,7 @@ class SessionHolderWithDelegate : public SessionHolder SessionHolder::ShiftToSession(session); } - void DispatchSessionEvent(SessionDelegate::Event event) override { (mDelegate.*event)(); } + void OnSessionHang() override { mDelegate.OnSessionHang(); } private: SessionDelegate & mDelegate; @@ -237,7 +237,7 @@ class Session void SetTCPConnection(ActiveTCPConnectionState * conn) { mTCPConnection = conn; } #endif // INET_CONFIG_ENABLE_TCP_ENDPOINT - void DispatchSessionEvent(SessionDelegate::Event event) + void NotifySessionHang() { // Holders might remove themselves when notified. auto holder = mHolders.begin(); @@ -245,7 +245,7 @@ class Session { auto cur = holder; ++holder; - cur->DispatchSessionEvent(event); + cur->OnSessionHang(); } } diff --git a/src/transport/SessionDelegate.h b/src/transport/SessionDelegate.h index 503aaa2b0c4f5c..8de535a265796c 100644 --- a/src/transport/SessionDelegate.h +++ b/src/transport/SessionDelegate.h @@ -51,8 +51,6 @@ class DLL_EXPORT SessionDelegate */ virtual NewSessionHandlingPolicy GetNewSessionHandlingPolicy() { return NewSessionHandlingPolicy::kShiftToNewSession; } - using Event = void (SessionDelegate::*)(); - /** * @brief * Called when a session is releasing. Callees SHALL NOT make synchronous calls into SessionManager to allocate a new session.