1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- /*
- * HierarchyMaintainer.hh
- *
- * Copyright 2000, LifeLine Networks BV (www.lifeline.nl). All rights reserved.
- * Copyright 2000, Bastiaan Bakker. All rights reserved.
- *
- * See the COPYING file for the terms of usage and distribution.
- */
- #ifndef _LOG4CPP_HIERARCHYMAINTAINER_HH
- #define _LOG4CPP_HIERARCHYMAINTAINER_HH
- #include <log4cpp/Portability.hh>
- #include <string>
- #include <map>
- #include <vector>
- #include <log4cpp/Category.hh>
- #include <log4cpp/threading/Threading.hh>
- namespace log4cpp {
- /**
- * HierarchyMaintainer is an internal log4cpp class. It is responsible
- * for maintaining the hierarchy of Categories. Applications should
- * not have to use this class directly.
- **/
- class HierarchyMaintainer {
- friend class Log4cppCleanup;
- public:
- typedef std::map<std::string, Category*> CategoryMap;
- typedef void (*shutdown_fun_ptr)();
-
- static HierarchyMaintainer& getDefaultMaintainer();
- HierarchyMaintainer();
- virtual ~HierarchyMaintainer();
- virtual Category* getExistingInstance(const std::string& name);
- virtual Category& getInstance(const std::string& name);
- virtual std::vector<Category*>* getCurrentCategories() const;
- virtual void shutdown();
- void register_shutdown_handler(shutdown_fun_ptr handler);
- virtual void deleteAllCategories();
- protected:
- virtual Category* _getExistingInstance(const std::string& name);
- virtual Category& _getInstance(const std::string& name);
- CategoryMap _categoryMap;
- mutable threading::Mutex _categoryMutex;
- private:
- typedef std::vector<shutdown_fun_ptr> handlers_t;
-
- static HierarchyMaintainer* _defaultMaintainer;
- handlers_t handlers_;
- };
- }
- #endif // _LOG4CPP_HIERARCHYMAINTAINER_HH
|