1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#ifndef MQTT_WSS_LOG_H
#define MQTT_WSS_LOG_H
typedef enum mqtt_wss_log_type {
MQTT_WSS_LOG_DEBUG = 0x01,
MQTT_WSS_LOG_INFO = 0x02,
MQTT_WSS_LOG_WARN = 0x03,
MQTT_WSS_LOG_ERROR = 0x81,
MQTT_WSS_LOG_FATAL = 0x88
} mqtt_wss_log_type_t;
typedef void (*mqtt_wss_log_callback_t)(mqtt_wss_log_type_t, const char*);
typedef struct mqtt_wss_log_ctx *mqtt_wss_log_ctx_t;
/** Creates logging context with optional prefix and optional callback
* @param ctx_prefix String to be prefixed to every log message.
* This is useful if multiple clients are instantiated to be able to
* know which one this message belongs to. Can be `NULL` for no prefix.
* @param log_callback Callback to be called instead of logging to
* `STDOUT` or `STDERR` (if debug enabled otherwise silent). Callback has to be
* pointer to function of `void function(mqtt_wss_log_type_t, const char*)` type.
* If `NULL` default will be used (silent or STDERR/STDOUT).
* @return mqtt_wss_log_ctx_t or `NULL` on error */
mqtt_wss_log_ctx_t mqtt_wss_log_ctx_create(const char *ctx_prefix, mqtt_wss_log_callback_t log_callback);
/** Destroys logging context and cleans up the memory
* @param ctx Context to destroy */
void mqtt_wss_log_ctx_destroy(mqtt_wss_log_ctx_t ctx);
void mws_fatal(mqtt_wss_log_ctx_t ctx, const char *fmt, ...);
void mws_error(mqtt_wss_log_ctx_t ctx, const char *fmt, ...);
void mws_warn (mqtt_wss_log_ctx_t ctx, const char *fmt, ...);
void mws_info (mqtt_wss_log_ctx_t ctx, const char *fmt, ...);
void mws_debug(mqtt_wss_log_ctx_t ctx, const char *fmt, ...);
#endif /* MQTT_WSS_LOG_H */
|