123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- #include "precompile.h"
- #include "memutil.h"
- #include "log_mgr.h"
- int logmgr_create(logmgr_t **p_mgr)
- {
- logmgr_t *mgr;
- mgr = MALLOC_T(logmgr_t);
- if (mgr == NULL) {
- return -1;
- }
- INIT_LIST_HEAD(&mgr->factory_list);
- mgr->log_table = stringmap_create(-1);
- *p_mgr = mgr;
- return 0;
- }
- void logmgr_destroy(logmgr_t *mgr)
- {
- if (mgr) {
- int rc;
- stringmap_iterator *it = stringmap_default_iterator(mgr->log_table);
- rc = stringmap_iterator_next(it);
- while (rc == 0) {
- const char *key = stringmap_iterator_get_key(it);
- logbase_t *log = stringmap_iterator_get_value(it);
- rc = stringmap_iterator_next(it);
- stringmap_remove(mgr->log_table, key);
- logfactory_term_log(log->factory, log);
- logfactory_destroy_log(log->factory, log);
- }
- stringmap_destroy(mgr->log_table);
- {
- logfactory_t *pos, *n;
- list_for_each_entry_safe(pos, n, &mgr->factory_list, logfactory_t, entry) {
- list_del(&pos->entry);
- logfactory_destroy(pos);
- }
- }
- free(mgr);
- }
- }
- int logmgr_register_factory(logmgr_t *mgr, logfactory_t *fac)\
- {
- if (!mgr || !fac)
- return -1;
- list_add_tail(&fac->entry, &mgr->factory_list);
- return 0;
- }
- int logmgr_unregister_factory(logmgr_t *mgr, logfactory_t *fac)
- {
- if (!mgr || !fac)
- return -1;
- list_del(&fac->entry);
- return 0;
- }
- logfactory_t* logmgr_get_factory(logmgr_t *mgr, const char *name)
- {
- if (mgr && name) {
- logfactory_t *pos;
- list_for_each_entry(pos, &mgr->factory_list, logfactory_t, entry) {
- if (strcmp(name, pos->name) == 0)
- return pos;
- }
- }
- return NULL;
- }
- int logmgr_create_log(logmgr_t *mgr,
- const char *factory_name,
- const char *inst,
- logbase_t **p_log)
- {
- logfactory_t *factory = logmgr_get_factory(mgr, factory_name);
- if (factory) {
- logbase_t *log;
- if (stringmap_find(mgr->log_table, inst) == NULL) {
- log = logfactory_create_log(factory, inst);
- if (log) {
- stringmap_add(mgr->log_table, inst, log);
- *p_log = log;
- return 0;
- }
- }
- }
- return -1;
- }
- int logmgr_set_param(logmgr_t *mgr,
- logbase_t *log,
- const char *key,
- const char *value)
- {
- logfactory_t *factory = log->factory;
- return logfactory_set_log_param(factory, log, key, value);
- }
- int logmgr_init_log(logmgr_t *mgr, logbase_t *log)
- {
- logfactory_t *factory = log->factory;
- return logfactory_init_log(factory, log);
- }
- int logmgr_term_log(logmgr_t *mgr, logbase_t *log)
- {
- logfactory_t *factory = log->factory;
- return logfactory_term_log(factory, log);
- }
- void logmgr_destroy_log(logmgr_t *mgr, logbase_t *log)
- {
- logfactory_t *factory = log->factory;
- stringmap_remove(mgr->log_table, log->inst_name);
- logfactory_destroy_log(factory, log);
- }
- logbase_t *logmgr_find_log(logmgr_t *mgr, const char *inst)
- {
- stringmap_kv_pair *kvp = stringmap_find(mgr->log_table, inst);
- if (kvp) {
- return (logbase_t*)(stringmap_kv_pair_get_value(kvp));
- }
- return NULL;
- }
|