// -*- C++ -*- //============================================================================= /** * @file Log_Msg_Callback.h * * $Id$ * * @author Douglas C. Schmidt */ //============================================================================= #ifndef ACE_LOG_MSG_CALLBACK_H #define ACE_LOG_MSG_CALLBACK_H #include "ace/pre.h" #include "ace/config-all.h" #if !defined (ACE_LACKS_PRAGMA_ONCE) # pragma once #endif /* ACE_LACKS_PRAGMA_ONCE */ class ACE_Log_Record; /** * @class ACE_Log_Msg_Callback * * @brief An interface class used to get logging callbacks. * * Users who are interested in getting the logging messages * directly, can subclass this interface and override the log() * method. They must then register their subclass with the * Log_Msg class and make sure that they turn on the * ACE_Log_Msg::MSG_CALLBACK flag. * * Your routine is called with an instance of * ACE_Log_Record. From this class, you can get the log * message, the verbose log message, message type, message * priority, and so on. * * Remember that there is one Log_Msg object per thread. * Therefore, you may need to register your callback object with * many objects (and have the correct * synchronization in the method) or have a separate * callback object per Log_Msg object. Moreover, * are not inherited when a new thread * is spawned, so you'll need to reset these in each new thread. * */ class ACE_Export ACE_Log_Msg_Callback { public: /// No-op virtual destructor. virtual ~ACE_Log_Msg_Callback (void); /// Callback routine. This is called when we want to log a message. /// Since this routine is pure virtual, it must be overwritten by the /// subclass. virtual void log (ACE_Log_Record &log_record) = 0; }; #include "ace/post.h" #endif /* ACE_LOG_MSG_CALLBACK_H */