diff --git a/Sofa/framework/Core/src/sofa/core/logging/PerComponentLoggingMessageHandler.h b/Sofa/framework/Core/src/sofa/core/logging/PerComponentLoggingMessageHandler.h index ab4223240c4..4b889a3b54e 100644 --- a/Sofa/framework/Core/src/sofa/core/logging/PerComponentLoggingMessageHandler.h +++ b/Sofa/framework/Core/src/sofa/core/logging/PerComponentLoggingMessageHandler.h @@ -59,6 +59,7 @@ class SOFA_CORE_API PerComponentLoggingMessageHandler : public MessageHandler /// Inherited from MessageHandler void process(Message& m) override ; + std::string getName() const override { return "PerComponentLoggingMessageHandler"; } } ; /// diff --git a/Sofa/framework/Core/test/visual/DisplayFlags_test.cpp b/Sofa/framework/Core/test/visual/DisplayFlags_test.cpp index 14946dcc687..a0bfb8aab9e 100644 --- a/Sofa/framework/Core/test/visual/DisplayFlags_test.cpp +++ b/Sofa/framework/Core/test/visual/DisplayFlags_test.cpp @@ -61,6 +61,7 @@ class RAIIPerComponentLoggingMessageHandler : public helper::logging::PerCompone { helper::logging::MessageDispatcher::rmHandler(this); } + std::string getName() const override { return "RAIIPerComponentLoggingMessageHandler"; } }; TEST(DisplayFlags, readFromObject) diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/ClangMessageHandler.h b/Sofa/framework/Helper/src/sofa/helper/logging/ClangMessageHandler.h index 2978e5540e1..8f52793fefe 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/ClangMessageHandler.h +++ b/Sofa/framework/Helper/src/sofa/helper/logging/ClangMessageHandler.h @@ -36,6 +36,7 @@ class SOFA_HELPER_API ClangMessageHandler : public MessageHandler { public: void process(Message &m) override ; + std::string getName() const override { return "ClangMessageHandler"; } }; } // namespace sofa::helper::logging diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/ConsoleMessageHandler.h b/Sofa/framework/Helper/src/sofa/helper/logging/ConsoleMessageHandler.h index b69c7b80d73..99cc4501897 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/ConsoleMessageHandler.h +++ b/Sofa/framework/Helper/src/sofa/helper/logging/ConsoleMessageHandler.h @@ -44,6 +44,7 @@ class SOFA_HELPER_API ConsoleMessageHandler : public MessageHandler /// DefaultStyleMessageFormatter object to format the message. ConsoleMessageHandler(MessageFormatter* formatter = nullptr); void process(Message &m) override ; + std::string getName() const override { return "ConsoleMessageHandler"; } void setMessageFormatter( MessageFormatter* formatter ); private: diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/CountingMessageHandler.h b/Sofa/framework/Helper/src/sofa/helper/logging/CountingMessageHandler.h index 207a1ffd510..7c24e76d1c5 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/CountingMessageHandler.h +++ b/Sofa/framework/Helper/src/sofa/helper/logging/CountingMessageHandler.h @@ -65,6 +65,7 @@ class SOFA_HELPER_API CountingMessageHandler : public MessageHandler /// Inherited from MessageHandler void process(Message& m) override ; + std::string getName() const override { return "CountingMessageHandler"; } private: std::vector m_countMatching ; } ; diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/ExceptionMessageHandler.h b/Sofa/framework/Helper/src/sofa/helper/logging/ExceptionMessageHandler.h index 5b09c1f59a4..3ebd2ca90ef 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/ExceptionMessageHandler.h +++ b/Sofa/framework/Helper/src/sofa/helper/logging/ExceptionMessageHandler.h @@ -53,7 +53,7 @@ class SOFA_HELPER_API ExceptionMessageHandler : public MessageHandler void process(Message &m) override; - + std::string getName() const override { return "ExceptionMessageHandler"; } }; } // namespace sofa::helper::logging diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/FileMessageHandler.h b/Sofa/framework/Helper/src/sofa/helper/logging/FileMessageHandler.h index abf7f803096..161bd387dea 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/FileMessageHandler.h +++ b/Sofa/framework/Helper/src/sofa/helper/logging/FileMessageHandler.h @@ -46,6 +46,7 @@ class SOFA_HELPER_API FileMessageHandler : public MessageHandler ~FileMessageHandler() override; void process(Message& m) override ; + std::string getName() const override { return "FileMessageHandler"; } bool isValid(); // is output file ok ? diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/LoggingMessageHandler.h b/Sofa/framework/Helper/src/sofa/helper/logging/LoggingMessageHandler.h index 9ba0cd4b4b1..4823cf34147 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/LoggingMessageHandler.h +++ b/Sofa/framework/Helper/src/sofa/helper/logging/LoggingMessageHandler.h @@ -79,6 +79,8 @@ class SOFA_HELPER_API LoggingMessageHandler : public MessageHandler /// Inherited from MessageHandler void process(Message& m) override ; + std::string getName() const override { return "LoggingMessageHandler"; } + private: int m_activationCount {0}; vector m_messages ; diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/MessageHandler.h b/Sofa/framework/Helper/src/sofa/helper/logging/MessageHandler.h index 5168d4ccdd3..f01aeba84d2 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/MessageHandler.h +++ b/Sofa/framework/Helper/src/sofa/helper/logging/MessageHandler.h @@ -40,6 +40,7 @@ class SOFA_HELPER_API MessageHandler public: virtual ~MessageHandler(){} virtual void process(Message& m) = 0 ; + virtual std::string getName() const = 0; }; diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/RoutingMessageHandler.h b/Sofa/framework/Helper/src/sofa/helper/logging/RoutingMessageHandler.h index cd1a648dbca..a6cc0ba5dd1 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/RoutingMessageHandler.h +++ b/Sofa/framework/Helper/src/sofa/helper/logging/RoutingMessageHandler.h @@ -68,6 +68,7 @@ class SOFA_HELPER_API RoutingMessageHandler : public MessageHandler /// Inherited from MessageHandler void process(Message& m) override ; + std::string getName() const override { return "RoutingMessageHandler"; } private: std::vector > m_filters; diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/SilentMessageHandler.h b/Sofa/framework/Helper/src/sofa/helper/logging/SilentMessageHandler.h index 1d9aae52f70..18fe0fb54d2 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/SilentMessageHandler.h +++ b/Sofa/framework/Helper/src/sofa/helper/logging/SilentMessageHandler.h @@ -40,6 +40,7 @@ class SOFA_HELPER_API SilentMessageHandler : public MessageHandler { public: void process(Message& /*m*/) override; + std::string getName() const override { return "SilentMessageHandler"; } }; diff --git a/Sofa/framework/Helper/src/sofa/helper/logging/TracyMessageHandler.h b/Sofa/framework/Helper/src/sofa/helper/logging/TracyMessageHandler.h index 3f16256d3af..d8fb8a9f9ae 100644 --- a/Sofa/framework/Helper/src/sofa/helper/logging/TracyMessageHandler.h +++ b/Sofa/framework/Helper/src/sofa/helper/logging/TracyMessageHandler.h @@ -42,8 +42,9 @@ class SOFA_HELPER_API TracyMessageHandler : public MessageHandler TracyMessageHandler(MessageFormatter* formatter = nullptr); void process(Message &m) override ; void setMessageFormatter( MessageFormatter* formatter ); + std::string getName() const override { return "TracyMessageHandler"; } -private: + private: MessageFormatter *m_formatter { nullptr }; }; diff --git a/Sofa/framework/Helper/test/logging/logging_test.cpp b/Sofa/framework/Helper/test/logging/logging_test.cpp index 6edc9ada881..2b3ca8c8f41 100644 --- a/Sofa/framework/Helper/test/logging/logging_test.cpp +++ b/Sofa/framework/Helper/test/logging/logging_test.cpp @@ -73,6 +73,8 @@ class MyMessageHandler : public MessageHandler m_messages.push_back(m); } + std::string getName() const override { return "MyMessageHandler" ; } + size_t numMessages(){ return m_messages.size() ; } @@ -89,6 +91,7 @@ TEST(LoggingTest, noHandler) { // This test does not test anything, except the absence of crash MessageDispatcher::clearHandlers() ; + ASSERT_EQ(MessageDispatcher::getHandlers().size(), 0); msg_info("") << " info message with conversion" << 1.5 << "\n" ; msg_deprecated("") << " deprecated message with conversion" << 1.5 << "\n" ; @@ -134,6 +137,20 @@ TEST(LoggingTest, duplicatedHandler) EXPECT_TRUE( h.numMessages() == 4u) ; } +TEST(LoggingTest, rmHandler) +{ + MessageDispatcher::clearHandlers(); + + MyMessageHandler h; + + // First add is expected to return the handler ID. + EXPECT_TRUE(MessageDispatcher::addHandler(&h) == 0); + + EXPECT_EQ(MessageDispatcher::rmHandler(&h), -1); + + EXPECT_EQ(MessageDispatcher::getHandlers().size(), 0); +} + void f1() { for(unsigned int i=0;i<100000;i++){ diff --git a/Sofa/framework/Testing/src/sofa/testing/TestMessageHandler.cpp b/Sofa/framework/Testing/src/sofa/testing/TestMessageHandler.cpp index 857cb982b73..c173c02b2be 100644 --- a/Sofa/framework/Testing/src/sofa/testing/TestMessageHandler.cpp +++ b/Sofa/framework/Testing/src/sofa/testing/TestMessageHandler.cpp @@ -92,6 +92,8 @@ class SOFA_TESTING_API GtestMessageHandler : public MessageHandler /// Inherited from MessageHandler void process(Message& m) override ; + std::string getName() const override { return "GtestMessageHandler"; } + void pushFrame(Message::Type type, GtestMessageFrame* frame) ; void popFrame(Message::Type type) ; };