Add cls pointer to the logger
authorJuho Vähä-Herttua <juhovh@iki.fi>
Thu, 31 May 2012 17:54:42 +0000 (20:54 +0300)
committerJuho Vähä-Herttua <juhovh@iki.fi>
Thu, 31 May 2012 17:54:42 +0000 (20:54 +0300)
src/include/raop.h
src/lib/logger.c
src/lib/logger.h
src/lib/raop.c
src/test/example.c

index 5d5dc08d9131c78a17a64f4a0fab5f43a303b286..7328348bfa8256e5d1882c8a20af4b83a85bb8d6 100644 (file)
@@ -25,7 +25,7 @@ extern "C" {
 
 typedef struct raop_s raop_t;
 
-typedef void (*raop_log_callback_t)(int level, const char *msg);
+typedef void (*raop_log_callback_t)(void *cls, int level, const char *msg);
 
 struct raop_callbacks_s {
        void* cls;
@@ -47,7 +47,7 @@ RAOP_API raop_t *raop_init(int max_clients, raop_callbacks_t *callbacks, const c
 RAOP_API raop_t *raop_init_from_keyfile(int max_clients, raop_callbacks_t *callbacks, const char *keyfile);
 
 RAOP_API void raop_set_log_level(raop_t *raop, int level);
-RAOP_API void raop_set_log_callback(raop_t *raop, raop_log_callback_t callback);
+RAOP_API void raop_set_log_callback(raop_t *raop, raop_log_callback_t callback, void *cls);
 
 RAOP_API int raop_start(raop_t *raop, unsigned short *port, const char *hwaddr, int hwaddrlen, const char *password);
 RAOP_API int raop_is_running(raop_t *raop);
index dcda6004b8488e9dd89fb5a6ed876312d6ff9253..f3fe3547fa2143add97a5f39530d452c9146a93e 100644 (file)
@@ -25,6 +25,7 @@ struct logger_s {
        mutex_handle_t cb_mutex;
 
        int level;
+       void *cls;
        logger_callback_t callback;
 };
 
@@ -61,11 +62,12 @@ logger_set_level(logger_t *logger, int level)
 }
 
 void
-logger_set_callback(logger_t *logger, logger_callback_t callback)
+logger_set_callback(logger_t *logger, logger_callback_t callback, void *cls)
 {
        assert(logger);
 
        MUTEX_LOCK(logger->cb_mutex);
+       logger->cls = cls;
        logger->callback = callback;
        MUTEX_UNLOCK(logger->cb_mutex);
 }
@@ -120,7 +122,7 @@ logger_log(logger_t *logger, int level, const char *fmt, ...)
 
        MUTEX_LOCK(logger->cb_mutex);
        if (logger->callback) {
-               logger->callback(level, buffer);
+               logger->callback(logger->cls, level, buffer);
                MUTEX_UNLOCK(logger->cb_mutex);
        } else {
                char *local;
index 45e8b594db80d00faeabda48f60fa821afa97ec5..9a81358d95908e2de127d7b89e917d24dbfec753 100644 (file)
@@ -25,7 +25,7 @@
 #define LOGGER_INFO        6       /* informational */
 #define LOGGER_DEBUG       7       /* debug-level messages */
 
-typedef void (*logger_callback_t)(int level, const char *msg);
+typedef void (*logger_callback_t)(void *cls, int level, const char *msg);
 
 typedef struct logger_s logger_t;
 
@@ -33,7 +33,7 @@ logger_t *logger_init();
 void logger_destroy(logger_t *logger);
 
 void logger_set_level(logger_t *logger, int level);
-void logger_set_callback(logger_t *logger, logger_callback_t callback);
+void logger_set_callback(logger_t *logger, logger_callback_t callback, void *cls);
 
 void logger_log(logger_t *logger, int level, const char *fmt, ...);
 
index fd02edfebfdd1a1534dc3978be98071e089e0ee7..4f4f5185a30e28f979765a205c32c95c5aec6fe0 100644 (file)
@@ -460,11 +460,11 @@ raop_set_log_level(raop_t *raop, int level)
 }
 
 void
-raop_set_log_callback(raop_t *raop, raop_log_callback_t callback)
+raop_set_log_callback(raop_t *raop, raop_log_callback_t callback, void *cls)
 {
        assert(raop);
 
-       logger_set_callback(raop->logger, callback);
+       logger_set_callback(raop->logger, callback, cls);
 }
 
 int
index fdd97048b75f24c13581ff23ab909802464fe507..e857642da911b77cfd288e906a010f10bdc4efce 100644 (file)
@@ -67,7 +67,7 @@ audio_destroy(void *cls, void *session)
 }
 
 static void
-raop_log_callback(int level, const char *msg)
+raop_log_callback(void *cls, int level, const char *msg)
 {
        printf("RAOP LOG(%d): %s\n", level, msg);
 }
@@ -94,7 +94,7 @@ main(int argc, char *argv[])
 
        raop = raop_init_from_keyfile(10, &raop_cbs, "airport.key");
        raop_set_log_level(raop, RAOP_LOG_DEBUG);
-       raop_set_log_callback(raop, &raop_log_callback);
+       raop_set_log_callback(raop, &raop_log_callback, NULL);
        raop_start(raop, &raop_port, hwaddr, sizeof(hwaddr), "test");
 
        dnssd = dnssd_init(NULL);