diff --git a/Framework/Core/include/Framework/MessageContext.h b/Framework/Core/include/Framework/MessageContext.h index 407bac0ceb00a..fce4b109a465e 100644 --- a/Framework/Core/include/Framework/MessageContext.h +++ b/Framework/Core/include/Framework/MessageContext.h @@ -466,6 +466,11 @@ class MessageContext /// discarded. void clear(); + /// Discard pending output messages without asserting that they were sent. This + /// is intended for exception teardown paths where normal post-processing will + /// not run. + void discard(); + FairMQDeviceProxy& proxy() { return mProxy; diff --git a/Framework/Core/src/MessageContext.cxx b/Framework/Core/src/MessageContext.cxx index 59dfc15837210..81bb3c7bb95c4 100644 --- a/Framework/Core/src/MessageContext.cxx +++ b/Framework/Core/src/MessageContext.cxx @@ -107,6 +107,13 @@ void MessageContext::clear() mMessages.clear(); } +void MessageContext::discard() +{ + mDidDispatch = false; + mScheduledMessages.clear(); + mMessages.clear(); +} + int64_t MessageContext::addToCache(std::unique_ptr& toCache) { auto&& cached = toCache->GetTransport()->CreateMessage();