Kouhei Sutou
null+****@clear*****
Thu Dec 20 14:01:19 JST 2012
Kouhei Sutou 2012-12-20 14:01:19 +0900 (Thu, 20 Dec 2012) New Revision: 2fe475ee2db4278e722069a5a13f2b8350c977a6 https://github.com/groonga/groonga/commit/2fe475ee2db4278e722069a5a13f2b8350c977a6 Log: Fix query logger API The previous API isn't usable... Sorry... Modified files: include/groonga.h lib/ctx.c Modified: include/groonga.h (+4 -4) =================================================================== --- include/groonga.h 2012-12-20 13:06:37 +0900 (e8b657a) +++ include/groonga.h 2012-12-20 14:01:19 +0900 (dfdeba0) @@ -2083,12 +2083,12 @@ typedef struct _grn_query_logger_info grn_query_logger_info; struct _grn_query_logger_info { unsigned int flags; - grn_user_data *user_data; + void *user_data; void (*log)(grn_ctx *ctx, unsigned int flag, const char *timestamp, const char *info, const char *message, - grn_user_data *user_data); - void (*reopen)(grn_ctx *ctx, grn_user_data *user_data); - void (*fin)(grn_ctx *ctx, grn_user_data *user_data); + void *user_data); + void (*reopen)(grn_ctx *ctx, void *user_data); + void (*fin)(grn_ctx *ctx, void *user_data); }; GRN_API grn_rc grn_query_logger_info_set(grn_ctx *ctx, const grn_query_logger_info *info); Modified: lib/ctx.c (+30 -20) =================================================================== --- lib/ctx.c 2012-12-20 13:06:37 +0900 (06322fa) +++ lib/ctx.c 2012-12-20 14:01:19 +0900 (6f7fd2b) @@ -737,7 +737,7 @@ static grn_critical_section grn_query_logger_lock; static void default_query_logger_log(grn_ctx *ctx, unsigned int flag, const char *timestamp, const char *info, - const char *message, grn_user_data *user_data) + const char *message, void *user_data) { if (grn_qlog_path) { CRITICAL_SECTION_ENTER(grn_query_logger_lock); @@ -753,7 +753,7 @@ default_query_logger_log(grn_ctx *ctx, unsigned int flag, } static void -default_query_logger_close(grn_ctx *ctx, grn_user_data *user_data) +default_query_logger_close(grn_ctx *ctx, void *user_data) { GRN_QUERY_LOG(ctx, GRN_QUERY_LOG_DESTINATION, " ", "query log will be closed: <%s>", grn_qlog_path); @@ -766,7 +766,7 @@ default_query_logger_close(grn_ctx *ctx, grn_user_data *user_data) } static void -default_query_logger_reopen(grn_ctx *ctx, grn_user_data *user_data) +default_query_logger_reopen(grn_ctx *ctx, void *user_data) { if (grn_qlog_path) { default_query_logger_close(ctx, user_data); @@ -776,7 +776,7 @@ default_query_logger_reopen(grn_ctx *ctx, grn_user_data *user_data) } static void -default_query_logger_fin(grn_ctx *ctx, grn_user_data *user_data) +default_query_logger_fin(grn_ctx *ctx, void *user_data) { if (default_query_logger_file) { default_query_logger_close(ctx, user_data); @@ -791,12 +791,21 @@ static grn_query_logger_info default_query_logger = { default_query_logger_fin }; -static const grn_query_logger_info *grn_query_logger = &default_query_logger; +static grn_query_logger_info grn_query_logger = { + GRN_QUERY_LOG_DEFAULT, + NULL, + NULL, + NULL, + NULL +}; void grn_default_query_logger_set_flags(unsigned int flags) { default_query_logger.flags = flags; + if (grn_query_logger.log == default_query_logger_log) { + grn_query_logger.flags = flags; + } } unsigned int @@ -830,8 +839,8 @@ grn_log_reopen(grn_ctx *ctx) void grn_query_logger_reopen(grn_ctx *ctx) { - if (grn_query_logger->reopen) { - grn_query_logger->reopen(ctx, grn_query_logger->user_data); + if (grn_query_logger.reopen) { + grn_query_logger.reopen(ctx, grn_query_logger.user_data); } } @@ -871,7 +880,8 @@ grn_init(void) grn_rc rc; grn_ctx *ctx = &grn_gctx; grn_logger = &default_logger; - grn_query_logger = &default_query_logger; + memcpy(&grn_query_logger, &default_query_logger, + sizeof(grn_query_logger_info)); CRITICAL_SECTION_INIT(grn_glock); CRITICAL_SECTION_INIT(grn_logger_lock); CRITICAL_SECTION_INIT(grn_query_logger_lock); @@ -2472,18 +2482,19 @@ grn_logger_put(grn_ctx *ctx, grn_log_level level, void grn_query_logger_fin(grn_ctx *ctx) { - if (grn_query_logger->fin) { - grn_query_logger->fin(ctx, grn_query_logger->user_data); + if (grn_query_logger.fin) { + grn_query_logger.fin(ctx, grn_query_logger.user_data); } } grn_rc grn_query_logger_info_set(grn_ctx *ctx, const grn_query_logger_info *info) { + grn_query_logger_fin(ctx); if (info) { - grn_query_logger = info; + grn_query_logger = *info; } else { - grn_query_logger = &default_query_logger; + grn_query_logger = default_query_logger; } return GRN_SUCCESS; } @@ -2491,7 +2502,7 @@ grn_query_logger_info_set(grn_ctx *ctx, const grn_query_logger_info *info) grn_bool grn_query_logger_pass(grn_ctx *ctx, unsigned int flag) { - return grn_query_logger->flags & flag; + return grn_query_logger.flags & flag; } #define TIMESTAMP_BUFFER_SIZE TBUFSIZE @@ -2507,6 +2518,10 @@ grn_query_logger_put(grn_ctx *ctx, unsigned int flag, const char *mark, char info[INFO_BUFFER_SIZE]; char message[MESSAGE_BUFFER_SIZE]; + if (!grn_query_logger.log) { + return; + } + { grn_timeval tv; timestamp[0] = '\0'; @@ -2538,13 +2553,8 @@ grn_query_logger_put(grn_ctx *ctx, unsigned int flag, const char *mark, message[MESSAGE_BUFFER_SIZE - 1] = '\0'; } - if (grn_query_logger->log) { - grn_query_logger->log(ctx, flag, timestamp, info, message, - grn_query_logger->user_data); - } else { - default_query_logger_log(ctx, flag, timestamp, info, message, - grn_query_logger->user_data); - } + grn_query_logger.log(ctx, flag, timestamp, info, message, + grn_query_logger.user_data); } void -------------- next part -------------- HTML����������������������������... ダウンロード