merged tasking branch into trunk
This commit is contained in:
@@ -180,7 +180,7 @@ static int get_thread_number(private_bus_t *this)
|
||||
static void add_listener(private_bus_t *this, bus_listener_t *listener)
|
||||
{
|
||||
pthread_mutex_lock(&this->mutex);
|
||||
this->listeners->insert_last(this->listeners, (void*)listener);
|
||||
this->listeners->insert_last(this->listeners, listener);
|
||||
pthread_mutex_unlock(&this->mutex);
|
||||
}
|
||||
|
||||
@@ -301,7 +301,12 @@ static void vsignal(private_bus_t *this, signal_t signal, level_t level,
|
||||
va_list args_copy;
|
||||
|
||||
va_copy(args_copy, args);
|
||||
listener->signal(listener, signal, level, thread, ike_sa, format, args_copy);
|
||||
if (!listener->signal(listener, signal, level, thread,
|
||||
ike_sa, format, args_copy))
|
||||
{
|
||||
/* unregister listener if requested */
|
||||
iterator->remove(iterator);
|
||||
}
|
||||
va_end(args_copy);
|
||||
}
|
||||
iterator->destroy(iterator);
|
||||
|
||||
@@ -224,6 +224,8 @@ struct bus_listener_t {
|
||||
* an additional informational or error message with a printf() like
|
||||
* variable argument list. This is in the va_list form, as forwarding
|
||||
* a "..." parameters to functions is not (cleanly) possible.
|
||||
* The implementing signal function returns TRUE to stay registered
|
||||
* to the bus, or FALSE to unregister itself.
|
||||
*
|
||||
* @param this listener
|
||||
* @param singal kind of the signal (up, down, rekeyed, ...)
|
||||
@@ -232,8 +234,9 @@ struct bus_listener_t {
|
||||
* @param ike_sa IKE_SA associated to the event
|
||||
* @param format printf() style format string
|
||||
* @param args vprintf() style va_list argument list
|
||||
" @return TRUE to stay registered, FALSE to unregister
|
||||
*/
|
||||
void (*signal) (bus_listener_t *this, signal_t signal, level_t level,
|
||||
bool (*signal) (bus_listener_t *this, signal_t signal, level_t level,
|
||||
int thread, ike_sa_t *ike_sa, char* format, va_list args);
|
||||
};
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ struct private_file_logger_t {
|
||||
/**
|
||||
* Implementation of bus_listener_t.signal.
|
||||
*/
|
||||
static void signal_(private_file_logger_t *this, signal_t signal, level_t level,
|
||||
static bool signal_(private_file_logger_t *this, signal_t signal, level_t level,
|
||||
int thread, ike_sa_t* ike_sa, char *format, va_list args)
|
||||
{
|
||||
if (level <= this->levels[SIG_TYPE(signal)])
|
||||
@@ -76,6 +76,8 @@ static void signal_(private_file_logger_t *this, signal_t signal, level_t level,
|
||||
current = next;
|
||||
}
|
||||
}
|
||||
/* always stay registered */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -114,7 +116,7 @@ file_logger_t *file_logger_create(FILE *out)
|
||||
private_file_logger_t *this = malloc_thing(private_file_logger_t);
|
||||
|
||||
/* public functions */
|
||||
this->public.listener.signal = (void(*)(bus_listener_t*,signal_t,level_t,int,ike_sa_t*,char*,va_list))signal_;
|
||||
this->public.listener.signal = (bool(*)(bus_listener_t*,signal_t,level_t,int,ike_sa_t*,char*,va_list))signal_;
|
||||
this->public.set_level = (void(*)(file_logger_t*,signal_t,level_t))set_level;
|
||||
this->public.destroy = (void(*)(file_logger_t*))destroy;
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ struct private_sys_logger_t {
|
||||
/**
|
||||
* Implementation of bus_listener_t.signal.
|
||||
*/
|
||||
static void signal_(private_sys_logger_t *this, signal_t signal, level_t level,
|
||||
static bool signal_(private_sys_logger_t *this, signal_t signal, level_t level,
|
||||
int thread, ike_sa_t* ike_sa, char *format, va_list args)
|
||||
{
|
||||
if (level <= this->levels[SIG_TYPE(signal)])
|
||||
@@ -78,6 +78,8 @@ static void signal_(private_sys_logger_t *this, signal_t signal, level_t level,
|
||||
current = next;
|
||||
}
|
||||
}
|
||||
/* always stay registered */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -117,7 +119,7 @@ sys_logger_t *sys_logger_create(int facility)
|
||||
private_sys_logger_t *this = malloc_thing(private_sys_logger_t);
|
||||
|
||||
/* public functions */
|
||||
this->public.listener.signal = (void(*)(bus_listener_t*,signal_t,level_t,int,ike_sa_t*,char*,va_list))signal_;
|
||||
this->public.listener.signal = (bool(*)(bus_listener_t*,signal_t,level_t,int,ike_sa_t*,char*,va_list))signal_;
|
||||
this->public.set_level = (void(*)(sys_logger_t*,signal_t,level_t))set_level;
|
||||
this->public.destroy = (void(*)(sys_logger_t*))destroy;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user