libindy-sys 0.1.7-dev-0

FFI bindings for Libindy.
Documentation
#ifndef __indy__logger_included__
#define __indy__logger_included__

#include "indy_mod.h"
#include "indy_types.h"

typedef indy_bool_t (*indyLoggerEnabledCb)(const void*  context,
                                           indy_u32_t level,
                                           const char* target);

typedef void (*indyLoggerLogCb)(const void*  context,
                                indy_u32_t level,
                                const char* target,
                                const char* message,
                                const char* module_path,
                                const char* file,
                                indy_u32_t line);

typedef void (*indyLoggerFlushCb)(const void*  context);

typedef indy_bool_t (**indyGetLoggerEnabledCb)(const void*  context,
                                               indy_u32_t level,
                                               const char* target);

typedef void (**indyGetLoggerLogCb)(const void*  context,
                                    indy_u32_t level,
                                    const char* target,
                                    const char* message,
                                    const char* module_path,
                                    const char* file,
                                    indy_u32_t line);

typedef void (**indyGetLoggerFlushCb)(const void*  context);

#ifdef __cplusplus
extern "C" {
#endif

    /// Set custom logger implementation.
    ///
    /// Allows library user to provide custom logger implementation as set of handlers.
    ///
    /// #Params
    /// context: pointer to some logger context that will be available in logger handlers.
    /// enabled: (optional) "enabled" operation handler - calls to determines if a log record would be logged. (false positive if not specified)
    /// log: "log" operation handler - calls to logs a record.
    /// flush: (optional) "flush" operation handler - calls to flushes buffered records (in case of crash or signal).
    ///
    /// #Returns
    /// Error code

    extern indy_error_t indy_set_logger(const void*  context,
                                        indyLoggerEnabledCb enabled_cb,
                                        indyLoggerLogCb log_cb,
                                        indyLoggerFlushCb flush_cb
                                                  );

    /// Set default logger implementation.
    ///
    /// Allows library user use `env_logger` logger as default implementation.
    /// More details about `env_logger` and its customization can be found here: https://crates.io/crates/env_logger
    ///
    /// #Params
    /// pattern: (optional) pattern that corresponds with the log messages to show.
    ///
    /// NOTE: You should specify either `pattern` parameter or `RUST_LOG` environment variable to init logger.
    ///
    /// #Returns
    /// Error code
    
    extern indy_error_t indy_set_default_logger(const char *  pattern );

    /// Get the currently used logger.
    ///
    /// NOTE: if logger is not set dummy implementation would be returned.
    ///
    /// #Params
    /// `context_p` - Reference that will contain logger context.
    /// `enabled_cb_p` - Reference that will contain pointer to enable operation handler.
    /// `log_cb_p` - Reference that will contain pointer to log operation handler.
    /// `flush_cb_p` - Reference that will contain pointer to flush operation handler.
    ///
    /// #Returns
    /// Error code

    extern indy_error_t indy_get_logger(const void*  indy_get_logger,
                                        indyLoggerEnabledCb enabled_cb,
                                        indyLoggerLogCb log_cb,
                                        indyLoggerFlushCb flush_cb
                                                  );

#ifdef __cplusplus
}
#endif

#endif