Commit a04eeb44 authored by jehan's avatar jehan

use lists and logs from bctoolbox

parent 6e0c52b0
......@@ -18,42 +18,37 @@
#ifndef BELLE_SIP_LIST_H_
#define BELLE_SIP_LIST_H_
BELLE_SIP_BEGIN_DECLS
struct _belle_sip_list {
struct _belle_sip_list *next;
struct _belle_sip_list *prev;
void *data;
};
typedef struct _belle_sip_list belle_sip_list_t;
BELLESIP_EXPORT belle_sip_list_t * belle_sip_list_append(belle_sip_list_t * elem, void * data);
BELLESIP_EXPORT belle_sip_list_t * belle_sip_list_prepend(belle_sip_list_t * elem, void * data);
BELLESIP_EXPORT belle_sip_list_t* belle_sip_list_prepend_link(belle_sip_list_t* elem, belle_sip_list_t *new_elem);
BELLESIP_EXPORT belle_sip_list_t * belle_sip_list_last_elem(const belle_sip_list_t *l);
BELLESIP_EXPORT belle_sip_list_t * belle_sip_list_free(belle_sip_list_t * elem);
BELLESIP_EXPORT belle_sip_list_t * belle_sip_list_concat(belle_sip_list_t * first, belle_sip_list_t * second);
BELLESIP_EXPORT belle_sip_list_t * belle_sip_list_remove(belle_sip_list_t * first, void *data);
BELLESIP_EXPORT belle_sip_list_t * belle_sip_list_pop_front(belle_sip_list_t *list, void **front_data);
BELLESIP_EXPORT int belle_sip_list_size(const belle_sip_list_t * first);
BELLESIP_EXPORT void belle_sip_list_for_each(const belle_sip_list_t * list, void (*func)(void *));
BELLESIP_EXPORT void belle_sip_list_for_each2(const belle_sip_list_t * list, void (*func)(void *, void *), void *user_data);
BELLESIP_EXPORT belle_sip_list_t * belle_sip_list_remove_link(belle_sip_list_t * list, belle_sip_list_t * elem);
BELLESIP_EXPORT belle_sip_list_t * belle_sip_list_delete_link(belle_sip_list_t * list, belle_sip_list_t * elem);
BELLESIP_EXPORT belle_sip_list_t * belle_sip_list_find(belle_sip_list_t * list, void *data);
BELLESIP_EXPORT belle_sip_list_t * belle_sip_list_free(belle_sip_list_t *list);
/*frees list elements and associated data, using the supplied function pointer*/
BELLESIP_EXPORT belle_sip_list_t * belle_sip_list_free_with_data(belle_sip_list_t *list, void (*freefunc)(void*));
typedef int (*belle_sip_compare_func)(const void *, const void*);
BELLESIP_EXPORT belle_sip_list_t * belle_sip_list_find_custom(const belle_sip_list_t * list, belle_sip_compare_func cmp, const void *user_data);
BELLESIP_EXPORT void * belle_sip_list_nth_data(const belle_sip_list_t * list, int index);
BELLESIP_EXPORT int belle_sip_list_position(const belle_sip_list_t * list, belle_sip_list_t * elem);
BELLESIP_EXPORT int belle_sip_list_index(const belle_sip_list_t * list, void *data);
BELLESIP_EXPORT belle_sip_list_t * belle_sip_list_insert_sorted(belle_sip_list_t * list, void *data, belle_sip_compare_func cmp);
BELLESIP_EXPORT belle_sip_list_t * belle_sip_list_insert(belle_sip_list_t * list, belle_sip_list_t * before, void *data);
BELLESIP_EXPORT belle_sip_list_t * belle_sip_list_copy(const belle_sip_list_t * list);
/*copy list elements and associated data, using the supplied function pointer*/
BELLESIP_EXPORT belle_sip_list_t* belle_sip_list_copy_with_data(const belle_sip_list_t* list, void* (*copyfunc)(void*));
BELLE_SIP_END_DECLS
#include "bctoolbox/list.h"
typedef struct _bctbx_list belle_sip_list_t;
#define belle_sip_list_new bctbx_list_new
#define belle_sip_list_append bctbx_list_append
#define belle_sip_list_prepend bctbx_list_prepend
#define belle_sip_list_prepend_link bctbx_list_prepend_link
#define belle_sip_list_last_elem bctbx_list_last_elem
#define belle_sip_list_free bctbx_list_free
#define belle_sip_list_concat bctbx_list_concat
#define belle_sip_list_remove bctbx_list_remove
#define belle_sip_list_pop_front bctbx_list_pop_front
#define belle_sip_list_size bctbx_list_size
#define belle_sip_list_for_each bctbx_list_for_each
#define belle_sip_list_for_each2 bctbx_list_for_each2
#define belle_sip_list_remove_link bctbx_list_remove_link
#define belle_sip_list_delete_link bctbx_list_delete_link
#define belle_sip_list_find bctbx_list_find
#define belle_sip_list_free bctbx_list_free
#define belle_sip_list_free_with_data bctbx_list_free_with_data
#define belle_sip_compare_func bctbx_compare_func
#define belle_sip_list_find_custom bctbx_list_find_custom
#define belle_sip_list_nth_data bctbx_list_nth_data
#define belle_sip_list_position bctbx_list_position
#define belle_sip_list_index bctbx_list_index
#define belle_sip_list_insert_sorted bctbx_list_insert_sorted
#define belle_sip_list_insert bctbx_list_insert
#define belle_sip_list_copy bctbx_list_copy
#define belle_sip_list_copy_with_data bctbx_list_copy_with_data
#endif /* BELLE_SIP_LIST_H_ */
......@@ -21,6 +21,7 @@
#include "belle-sip/defs.h"
#include "belle-sip/utils.h"
#include "belle-sip/list.h"
/*
* typedefs, macros and functions for object definition and manipulation.
......@@ -151,8 +152,8 @@ struct _belle_sip_object{
char* name;
struct weak_ref *weak_refs;
struct belle_sip_object_pool *pool;
struct _belle_sip_list *pool_iterator;
struct _belle_sip_list *data_store;
belle_sip_list_t *pool_iterator;
belle_sip_list_t *data_store;
};
......
......@@ -25,14 +25,25 @@
#include <errno.h>
#include "belle-sip/defs.h"
#ifdef BCTBX_LOG_DOMAIN
#undef BCTBX_LOG_DOMAIN
#endif
#ifndef BELLE_SIP_LOG_DOMAIN
#define BELLE_SIP_LOG_DOMAIN "belle-sip"
#endif
#define BCTBX_LOG_DOMAIN BELLE_SIP_LOG_DOMAIN
#include "bctoolbox/logging.h"
BELLE_SIP_BEGIN_DECLS
BELLESIP_EXPORT void *belle_sip_malloc(size_t size);
BELLESIP_EXPORT void *belle_sip_malloc0(size_t size);
BELLESIP_EXPORT void *belle_sip_realloc(void *ptr, size_t size);
BELLESIP_EXPORT void belle_sip_free(void *ptr);
BELLESIP_EXPORT char * belle_sip_strdup(const char *s);
#define belle_sip_malloc bctbx_malloc
#define belle_sip_malloc0 bctbx_malloc0
#define belle_sip_realloc bctbx_realloc
#define belle_sip_free bctbx_free
#define belle_sip_strdup bctbx_strdup
BELLE_SIP_END_DECLS
......@@ -40,17 +51,15 @@ BELLE_SIP_END_DECLS
/* logging api */
/***************/
typedef enum {
BELLE_SIP_LOG_FATAL=1,
BELLE_SIP_LOG_ERROR=1<<1,
BELLE_SIP_LOG_WARNING=1<<2,
BELLE_SIP_LOG_MESSAGE=1<<3,
BELLE_SIP_LOG_DEBUG=1<<4,
BELLE_SIP_LOG_END=1<<5
} belle_sip_log_level;
#define BELLE_SIP_LOG_FATAL BCTBX_LOG_FATAL
#define BELLE_SIP_LOG_ERROR BCTBX_LOG_ERROR
#define BELLE_SIP_LOG_WARNING BCTBX_LOG_WARNING
#define BELLE_SIP_LOG_MESSAGE BCTBX_LOG_MESSAGE
#define BELLE_SIP_LOG_DEBUG BCTBX_LOG_DEBUG
#define BELLE_SIP_LOG_END BCTBX_LOG_END
#define belle_sip_log_level BctbxLogLevel
typedef void (*belle_sip_log_function_t)(belle_sip_log_level lev, const char *fmt, va_list args);
#define belle_sip_log_function_t BctoolboxLogFunc
typedef enum {
......@@ -68,31 +77,10 @@ typedef enum {
BELLE_SIP_BEGIN_DECLS
BELLESIP_VAR_EXPORT belle_sip_log_function_t belle_sip_logv_out;
BELLESIP_VAR_EXPORT unsigned int __belle_sip_log_mask;
#define belle_sip_log_level_enabled(level) (__belle_sip_log_mask & (level))
#if !defined(_WIN32) && !defined(_WIN32_WCE)
static BELLESIP_INLINE void belle_sip_logv(belle_sip_log_level level, const char *fmt, va_list args) {
if (belle_sip_logv_out!=NULL && belle_sip_log_level_enabled(level))
belle_sip_logv_out(level,fmt,args);
if (level==BELLE_SIP_LOG_FATAL) abort();
}
#else
BELLESIP_EXPORT void belle_sip_logv(int level, const char *fmt, va_list args);
#endif
#define belle_sip_log_level_enabled(level) bctbx_log_level_enabled(BELLE_SIP_LOG_DOMAIN,level)
#ifdef BELLE_SIP_DEBUG_MODE
static BELLESIP_INLINE void belle_sip_debug(const char *fmt,...)
{
va_list args;
va_start (args, fmt);
belle_sip_logv(BELLE_SIP_LOG_DEBUG, fmt, args);
va_end (args);
}
#define belle_sip_deb(...) bctbx_debug(...)
#else
#define belle_sip_debug(...)
......@@ -107,61 +95,27 @@ static BELLESIP_INLINE void belle_sip_debug(const char *fmt,...)
#else
static BELLESIP_INLINE void BELLE_SIP_CHECK_FORMAT_ARGS(2,3) belle_sip_log(belle_sip_log_level lev, const char *fmt,...){
va_list args;
va_start (args, fmt);
belle_sip_logv(lev, fmt, args);
va_end (args);
}
static BELLESIP_INLINE void BELLE_SIP_CHECK_FORMAT_ARGS(1,2) belle_sip_message(const char *fmt,...)
{
va_list args;
va_start (args, fmt);
belle_sip_logv(BELLE_SIP_LOG_MESSAGE, fmt, args);
va_end (args);
}
static BELLESIP_INLINE void BELLE_SIP_CHECK_FORMAT_ARGS(1,2) belle_sip_warning(const char *fmt,...)
{
va_list args;
va_start (args, fmt);
belle_sip_logv(BELLE_SIP_LOG_WARNING, fmt, args);
va_end (args);
}
#define belle_sip_log bctbx_log
#define belle_sip_message bctbx_message
#define belle_sip_warning bctbx_warning
#define belle_sip_error bctbx_error
#define belle_sip_fatal bctbx_fatal
#define belle_sip_logv bctbx_logv
#endif
static BELLESIP_INLINE void BELLE_SIP_CHECK_FORMAT_ARGS(1,2) belle_sip_error(const char *fmt,...)
{
va_list args;
va_start (args, fmt);
belle_sip_logv(BELLE_SIP_LOG_ERROR, fmt, args);
va_end (args);
}
static BELLESIP_INLINE void BELLE_SIP_CHECK_FORMAT_ARGS(1,2) belle_sip_fatal(const char *fmt,...)
{
va_list args;
va_start (args, fmt);
belle_sip_logv(BELLE_SIP_LOG_FATAL, fmt, args);
va_end (args);
}
BELLESIP_EXPORT void belle_sip_set_log_file(FILE *file);
BELLESIP_EXPORT void belle_sip_set_log_handler(belle_sip_log_function_t func);
BELLESIP_EXPORT belle_sip_log_function_t belle_sip_get_log_handler(void);
#define belle_sip_set_log_file bctbx_set_log_file
#define belle_sip_set_log_handler bctbx_set_log_handler
#define belle_sip_get_log_handler bctbx_get_log_handler
BELLESIP_EXPORT char * BELLE_SIP_CHECK_FORMAT_ARGS(1,2) belle_sip_strdup_printf(const char *fmt,...);
BELLESIP_EXPORT char * belle_sip_strcat_vprintf(char* dst, const char *fmt, va_list ap);
BELLESIP_EXPORT char * BELLE_SIP_CHECK_FORMAT_ARGS(2,3) belle_sip_strcat_printf(char* dst, const char *fmt,...);
#define belle_sip_strdup_printf bctbx_strdup_printf
#define belle_sip_strcat_vprintf bctbx_strcat_vprintf
#define belle_sip_strcat_printf bctbx_strcat_printf
BELLESIP_EXPORT belle_sip_error_code BELLE_SIP_CHECK_FORMAT_ARGS(4,5) belle_sip_snprintf(char *buff, size_t buff_size, size_t *offset, const char *fmt, ...);
BELLESIP_EXPORT belle_sip_error_code belle_sip_snprintf_valist(char *buff, size_t buff_size, size_t *offset, const char *fmt, va_list args);
BELLESIP_EXPORT void belle_sip_set_log_level(int level);
#define belle_sip_set_log_level(level) bctbx_set_log_level(BELLE_SIP_LOG_DOMAIN,level);
BELLESIP_EXPORT char * belle_sip_random_token(char *ret, size_t size);
......
......@@ -284,7 +284,7 @@ struct belle_sip_dict {
#define MAX(a,b) ((a)>(b) ? (a) : (b))
BELLESIP_INTERNAL_EXPORT char * belle_sip_concat (const char *str, ...);
#define belle_sip_concat bctbx_concat
/*parameters accessors*/
......
......@@ -449,7 +449,7 @@ void belle_sip_main_loop_iterate(belle_sip_main_loop_t *ml){
next=elem->next;
if (!s->cancelled){
if (s->timeout > 0 && (__belle_sip_log_mask & BELLE_SIP_LOG_DEBUG)) {
if (s->timeout > 0 && belle_sip_log_level_enabled(BELLE_SIP_LOG_DEBUG)) {
/*to avoid too many traces*/
char *objdesc=belle_sip_object_to_string((belle_sip_object_t*)s);
belle_sip_debug("source %s notified revents=%u, timeout=%i",objdesc,revents,s->timeout);
......
......@@ -53,7 +53,10 @@ static void add_new_object(belle_sip_object_t *obj){
static void remove_free_object(belle_sip_object_t *obj){
if (belle_sip_leak_detector_enabled && !belle_sip_leak_detector_inhibited){
all_objects=_belle_sip_list_remove(all_objects,obj,FALSE); /*it may fail if the leak detector was inhibitted at the time the object was created*/
belle_sip_list_t* it;
it=belle_sip_list_find(all_objects,obj);
if (it)
all_objects = belle_sip_list_delete_link(all_objects,it); /*it may fail if the leak detector was inhibitted at the time the object was created*/
}
}
......@@ -304,7 +307,7 @@ static void belle_sip_object_data_destroy(void* data)
int belle_sip_object_data_set( belle_sip_object_t *obj, const char* name, void* data, belle_sip_data_destroy destroy_func )
{
int ret = 0;
struct _belle_sip_list* list_entry = belle_sip_list_find_custom(obj->data_store, belle_sip_object_data_find, name);
belle_sip_list_t* list_entry = belle_sip_list_find_custom(obj->data_store, belle_sip_object_data_find, name);
struct belle_sip_object_data* entry = (list_entry)? list_entry->data : NULL;
if( entry == NULL){
......@@ -330,7 +333,7 @@ int belle_sip_object_data_set( belle_sip_object_t *obj, const char* name, void*
void* belle_sip_object_data_get( belle_sip_object_t *obj, const char* name )
{
struct _belle_sip_list* list_entry = belle_sip_list_find_custom(obj->data_store, belle_sip_object_data_find, name);
belle_sip_list_t *list_entry = belle_sip_list_find_custom(obj->data_store, belle_sip_object_data_find, name);
struct belle_sip_object_data* entry = (list_entry)? list_entry->data : NULL;
return entry? entry->data : NULL;
......@@ -338,7 +341,7 @@ void* belle_sip_object_data_get( belle_sip_object_t *obj, const char* name )
int belle_sip_object_data_remove( belle_sip_object_t *obj, const char* name)
{
struct _belle_sip_list* list_entry = belle_sip_list_find_custom(obj->data_store, belle_sip_object_data_find, name);
belle_sip_list_t *list_entry = belle_sip_list_find_custom(obj->data_store, belle_sip_object_data_find, name);
struct belle_sip_object_data* entry = (list_entry)? list_entry->data : NULL;
if( entry ){
belle_sip_free(entry->name);
......@@ -357,7 +360,7 @@ int belle_sip_object_data_exists( const belle_sip_object_t *obj, const char* nam
void* belle_sip_object_data_grab( belle_sip_object_t* obj, const char* name)
{
struct _belle_sip_list* list_entry = belle_sip_list_find_custom(obj->data_store, belle_sip_object_data_find, name);
belle_sip_list_t *list_entry = belle_sip_list_find_custom(obj->data_store, belle_sip_object_data_find, name);
struct belle_sip_object_data* entry = (list_entry)? list_entry->data : NULL;
void* data =NULL;
......@@ -385,7 +388,7 @@ void belle_sip_object_data_clone( const belle_sip_object_t* src, belle_sip_objec
void belle_sip_object_data_merge( const belle_sip_object_t* src, belle_sip_object_t* dst, belle_sip_data_clone clone_func)
{
struct _belle_sip_list* list = src->data_store;
belle_sip_list_t *list = src->data_store;
struct belle_sip_object_data* it = NULL;
void* cloned_data = NULL;
......
This diff is collapsed.
......@@ -633,7 +633,7 @@ static int belle_sip_channel_process_read_data(belle_sip_channel_t *obj){
/*first null terminate the read buff*/
*obj->input_stream.write_ptr='\0';
if (num>20 || obj->input_stream.state != WAITING_MESSAGE_START ) /*to avoid tracing server based keep alives*/ {
char *logbuf = make_logbuf(obj, BELLE_SIP_LOG_MESSAGE,begin,num);
char *logbuf = make_logbuf(obj, BELLE_SIP_LOG_MESSAGE ,begin,num);
if (logbuf) {
belle_sip_message("channel [%p]: received [%i] new bytes from [%s://%s:%i]:\n%s",
obj,
......
This diff is collapsed.
......@@ -88,7 +88,7 @@ static void test_generate_and_parse_certificates(void) {
/* create 2 certificates in the temporary certificate directory (TODO : set the directory in a absolute path?? where?)*/
ret = belle_sip_generate_self_signed_certificate(belle_sip_certificate_temporary_dir, "test_certificate1", &certificate, &key);
if (ret == BCTOOLBOX_ERROR_UNAVAILABLE_FUNCTION) {
if (ret == BCTBX_ERROR_UNAVAILABLE_FUNCTION) {
belle_sip_warning("Test skipped, self signed certificate generation not available.");
return;
}
......@@ -161,7 +161,7 @@ static void test_certificate_fingerprint(void) {
belle_sip_certificates_chain_t *cert;
/* check underlying bctoolbox function availability */
if (bctoolbox_x509_certificate_get_fingerprint(NULL, NULL, 0, 0) == BCTOOLBOX_ERROR_UNAVAILABLE_FUNCTION) {
if (bctbx_x509_certificate_get_fingerprint(NULL, NULL, 0, 0) == BCTBX_ERROR_UNAVAILABLE_FUNCTION) {
belle_sip_warning("Test skipped, certificate fingerprint generation not available.");
return;
}
......
......@@ -82,7 +82,7 @@ static void log_handler(int lev, const char *fmt, va_list args) {
va_end(cap);
#endif
if (log_file){
belle_sip_logv(lev, fmt, args);
belle_sip_logv(BELLE_SIP_LOG_DOMAIN,lev, fmt, args);
}
}
......@@ -209,8 +209,10 @@ int main (int argc, char *argv[]) {
for(i=1;i<argc;++i){
if (strcmp(argv[i],"--verbose")==0){
belle_sip_set_log_level(BELLE_SIP_LOG_DEBUG);
bctbx_set_log_level(BCTBX_LOG_DOMAIN,BCTBX_LOG_DEBUG);
} else if (strcmp(argv[i],"--silent")==0){
belle_sip_set_log_level(BELLE_SIP_LOG_FATAL);
bctbx_set_log_level(BCTBX_LOG_DOMAIN,BCTBX_LOG_FATAL);
} else if (strcmp(argv[i],"--log-file")==0){
CHECK_ARG("--log-file", ++i, argc);
if (belle_sip_tester_set_log_file(argv[i]) < 0) return -2;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment