InertMessageSvc.h
Go to the documentation of this file.
1 #ifndef MESSAGESVC_INERTMESSAGESVC_H
2 #define MESSAGESVC_INERTMESSAGESVC_H 1
3 // Include files
4 // FW
5 #include "MessageSvc.h"
6 // C++
7 #include <thread>
8 #include <functional>
9 #include <memory>
10 // External libs
11 #include "tbb/concurrent_queue.h"
12 
26 class InertMessageSvc: public MessageSvc {
27 public:
29  InertMessageSvc(const std::string& name, ISvcLocator* pSvcLocator);
30 
31  virtual ~InertMessageSvc();
32 
34  virtual StatusCode initialize();
35 
37  virtual StatusCode finalize();
38 
40 
42  virtual void reportMessage(const Message& msg);
43 
45  virtual void reportMessage(const Message& msg, int outputLevel);
46 
48  virtual void reportMessage(const StatusCode& code, const std::string& source = "");
49 
50 private:
51 
52  void m_activate();
53  void m_deactivate();
54  bool m_isActive;
55 
56  typedef std::function<void()> messageAction;
58  typedef std::shared_ptr<messageAction> messageActionPtr;
59  tbb::concurrent_bounded_queue<messageActionPtr> m_messageActionsQueue;
60 
61  std::thread m_thread;
62 
63 };
64 
65 #endif // MESSAGESVC_INERTMESSAGESVC_H
InertMessageSvc(const std::string &name, ISvcLocator *pSvcLocator)
Standard constructor.
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
Definition: ISvcLocator.h:25
std::shared_ptr< messageAction > messageActionPtr
This is done since the copy of the lambda storage is too expensive.
std::thread m_thread
virtual ~InertMessageSvc()
Destructor.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
virtual void reportMessage(const Message &msg)
Implementation of IMessageSvc::reportMessage()
void reportMessage(const Message &message) override
Definition: MessageSvc.cpp:506
virtual StatusCode initialize()
Initialization of the service.
The Message class.
Definition: Message.h:14
tbb::concurrent_bounded_queue< messageActionPtr > m_messageActionsQueue
virtual StatusCode finalize()
Finalization of the service.
int outputLevel() const override
Definition: MessageSvc.cpp:689
std::function< void()> messageAction