00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef _SWORD_LOG_LOGMEDIAMANAGER_
00020 #define _SWORD_LOG_LOGMEDIAMANAGER_
00021
00022 #include "sword/log.Log.h"
00023 #include "sword/log.LogMedia.h"
00024 #include "ace/Singleton.h"
00025 #include <map>
00026
00027
00028 namespace sword {
00029
00030 class SWORDDECL LogMediaManager {
00031 public:
00032 inline LogMediaManager();
00033 inline ~LogMediaManager();
00034
00035 void onLog(const Log::Entry &entry);
00036
00037 bool active(Log::Level level);
00038
00039 void registerMedia(Log::Level level1, Log::Level level2, PLogMedia media);
00040
00041 private:
00042 struct LogMediaEntry {
00043 Log::Level level1_;
00044 Log::Level level2_;
00045 PLogMedia media_;
00046 };
00047 typedef std::map<std::string, LogMediaEntry> LogMedias;
00048 LogMedias logMedias_;
00049 bool active_[Log::NOTUSED];
00050 ACE_Thread_Mutex mutex_;
00051 };
00052 typedef ACE_Singleton<LogMediaManager, ACE_Thread_Mutex> TheLogMediaManager;
00053
00054 }
00055
00056 #include "sword.private/log.LogMediaManager.inl"
00057
00058 #endif // _SWORD_LOG_LOGMEDIAMANAGER_