- logger manager is destroyed at end

This commit is contained in:
Jan Hutter
2005-11-16 12:22:57 +00:00
parent db7154547e
commit fe684f2a5e
+29 -17
View File
@@ -97,6 +97,23 @@ int main()
/* set signal handler */ /* set signal handler */
register_signals(); register_signals();
/* logger_manager is created first */
global_logger_manager = logger_manager_create(ALL);
if (global_logger_manager == NULL)
{
printf("could not create logger manager");
return -1;
}
/* a own logger for the daemon is created */
logger = global_logger_manager->create_logger(global_logger_manager,DAEMON,NULL);
if (logger == NULL)
{
printf("could not create logger object");
destroy_globals();
return -1;
}
/* initialize all global objects */ /* initialize all global objects */
if (initialize_globals() != SUCCESS) if (initialize_globals() != SUCCESS)
{ {
@@ -200,15 +217,13 @@ static void register_signals()
static status_t initialize_globals() static status_t initialize_globals()
{ {
/* initialize global object */ /* initialize global object */
global_logger_manager = logger_manager_create(ALL); global_socket = socket_create(4600);
global_socket = socket_create(4600); global_ike_sa_manager = ike_sa_manager_create();
global_job_queue = job_queue_create(); global_job_queue = job_queue_create();
global_event_queue = event_queue_create(); global_event_queue = event_queue_create();
global_send_queue = send_queue_create(); global_send_queue = send_queue_create();
global_ike_sa_manager = ike_sa_manager_create();
if ((global_logger_manager == NULL) || if ( (global_socket == NULL) ||
(global_socket == NULL) ||
(global_job_queue == NULL) || (global_job_queue == NULL) ||
(global_event_queue == NULL) || (global_event_queue == NULL) ||
(global_send_queue == NULL) || (global_send_queue == NULL) ||
@@ -241,10 +256,6 @@ static void destroy_globals()
{ {
global_socket->destroy(global_socket); global_socket->destroy(global_socket);
} }
if (global_logger_manager != NULL)
{
global_logger_manager->destroy(global_logger_manager);
}
if (global_ike_sa_manager != NULL) if (global_ike_sa_manager != NULL)
{ {
global_ike_sa_manager->destroy(global_ike_sa_manager); global_ike_sa_manager->destroy(global_ike_sa_manager);
@@ -291,22 +302,18 @@ static status_t start_threads()
*/ */
static void end_threads() static void end_threads()
{ {
logger->log(logger,CONTROL_MORE,"going to stop receiver thread");
if (receiver_thread != NULL) if (receiver_thread != NULL)
{ {
receiver_thread->destroy(receiver_thread); receiver_thread->destroy(receiver_thread);
} }
logger->log(logger,CONTROL_MORE,"going to stop scheduler thread");
if (scheduler_thread != NULL) if (scheduler_thread != NULL)
{ {
scheduler_thread->destroy(scheduler_thread); scheduler_thread->destroy(scheduler_thread);
} }
logger->log(logger,CONTROL_MORE,"going to stop sender thread");
if (sender_thread != NULL) if (sender_thread != NULL)
{ {
sender_thread->destroy(sender_thread); sender_thread->destroy(sender_thread);
} }
logger->log(logger,CONTROL_MORE,"going to stop all worker threads");
if (thread_pool != NULL) if (thread_pool != NULL)
{ {
thread_pool->destroy(thread_pool); thread_pool->destroy(thread_pool);
@@ -325,13 +332,18 @@ static void destroy_and_exit(int exit_code)
end_threads(); end_threads();
/* logger is destroyed */
logger->log(logger,CONTROL_MORE,"destroy logger and afterwards all global objects -> No more log from here");
global_logger_manager->destroy_logger(global_logger_manager,logger);
/* all globals can be destroyed now */ /* all globals can be destroyed now */
destroy_globals(); destroy_globals();
/* logger is destroyed */
logger->log(logger,CONTROL_MORE,"destroy logger");
global_logger_manager->destroy_logger(global_logger_manager,logger);
logger->log(logger,CONTROL_MORE,"destroy logger_manager");
if (global_logger_manager != NULL)
{
global_logger_manager->destroy(global_logger_manager);
}
#ifdef LEAK_DETECTIVE #ifdef LEAK_DETECTIVE
/* Leaks are reported in log file */ /* Leaks are reported in log file */
report_memory_leaks(void); report_memory_leaks(void);