X-Git-Url: https://git.efficios.com/?a=blobdiff_plain;f=src%2Fplugins%2Fctf%2Fcommon%2Fsrc%2Fmetadata%2Ftsdl%2Fdecoder.cpp;h=71fdcadf31c08eea8824fdb7f0a24833984a5101;hb=0f5c5d5ce30884c93b4e4d0662e2914029c3e90f;hp=382de995bb7f988fd944e0e70d896ef9edd86b92;hpb=644c6ca70640ef866d636a634ceb1488fed09b53;p=babeltrace.git diff --git a/src/plugins/ctf/common/src/metadata/tsdl/decoder.cpp b/src/plugins/ctf/common/src/metadata/tsdl/decoder.cpp index 382de995..71fdcadf 100644 --- a/src/plugins/ctf/common/src/metadata/tsdl/decoder.cpp +++ b/src/plugins/ctf/common/src/metadata/tsdl/decoder.cpp @@ -4,25 +4,14 @@ * Copyright 2016-2017 Philippe Proulx */ -#include -#include #include #include #include -#include - -#include - -#define BT_COMP_LOG_SELF_COMP (mdec->config.self_comp) -#define BT_COMP_LOG_SELF_COMP_CLASS (mdec->config.self_comp_class) -#define BT_LOG_OUTPUT_LEVEL ((enum bt_log_level) mdec->config.log_level) -#define BT_LOG_TAG "PLUGIN/CTF/META/DECODER" -#include "logging.hpp" -#include "logging/comp-logging.h" #include "common/assert.h" #include "common/uuid.h" #include "compat/memstream.h" +#include "cpp-common/vendor/fmt/format.h" #include "ast.hpp" #include "decoder-packetized-file-stream-to-buf.hpp" @@ -34,6 +23,12 @@ struct ctf_metadata_decoder { + explicit ctf_metadata_decoder(const bt2c::Logger& parentLogger) : + logger {parentLogger, "PLUGIN/CTF/META/DECODER"}, config {logger} + { + } + + bt2c::Logger logger; struct ctf_scanner *scanner = nullptr; GString *text = nullptr; struct ctf_visitor_generate_ir *visitor = nullptr; @@ -41,7 +36,6 @@ struct ctf_metadata_decoder bool is_uuid_set = false; int bo = 0; struct ctf_metadata_decoder_config config; - struct meta_log_config log_cfg; bool has_checked_plaintext_signature = false; }; @@ -60,7 +54,7 @@ struct packet_header } __attribute__((__packed__)); int ctf_metadata_decoder_is_packetized(FILE *fp, bool *is_packetized, int *byte_order, - bt_logging_level log_level, bt_self_component *self_comp) + const bt2c::Logger& logger) { uint32_t magic; size_t len; @@ -69,8 +63,8 @@ int ctf_metadata_decoder_is_packetized(FILE *fp, bool *is_packetized, int *byte_ *is_packetized = false; len = fread(&magic, sizeof(magic), 1, fp); if (len != 1) { - BT_COMP_LOG_CUR_LVL( - BT_LOG_INFO, log_level, self_comp, + BT_CPPLOGI_SPEC( + logger, "Cannot read first metadata packet header: assuming the stream is not packetized."); ret = -1; goto end; @@ -96,29 +90,29 @@ struct ctf_metadata_decoder * ctf_metadata_decoder_create(const struct ctf_metadata_decoder_config *config) { BT_ASSERT(config); - BT_COMP_LOG_CUR_LVL(BT_LOG_DEBUG, config->log_level, config->self_comp, - "Creating CTF metadata decoder: " - "clock-class-offset-s=%" PRId64 ", " - "clock-class-offset-ns=%" PRId64, - config->clock_class_offset_s, config->clock_class_offset_ns); - - ctf_metadata_decoder *mdec = new ctf_metadata_decoder; - mdec->log_cfg.log_level = config->log_level; - mdec->log_cfg.self_comp = config->self_comp; - mdec->log_cfg.self_comp_class = config->self_comp_class; - mdec->scanner = ctf_scanner_alloc(); + + BT_CPPLOGD_SPEC(config->logger, + "Creating CTF metadata decoder: " + "clock-class-offset-s={}, " + "clock-class-offset-ns={}", + config->clock_class_offset_s, config->clock_class_offset_ns); + + ctf_metadata_decoder *mdec = new ctf_metadata_decoder {config->logger}; + mdec->scanner = ctf_scanner_alloc(mdec->logger); if (!mdec->scanner) { - _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Cannot allocate a metadata lexical scanner: " - "mdec-addr=%p", - mdec); + BT_CPPLOGE_APPEND_CAUSE_SPEC(mdec->logger, + "Cannot allocate a metadata lexical scanner: " + "mdec-addr={}", + fmt::ptr(mdec)); goto error; } mdec->text = g_string_new(NULL); if (!mdec->text) { - _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Failed to allocate one GString: " - "mdec-addr=%p", - mdec); + BT_CPPLOGE_APPEND_CAUSE_SPEC(mdec->logger, + "Failed to allocate one GString: " + "mdec-addr={}", + fmt::ptr(mdec)); goto error; } @@ -126,16 +120,18 @@ ctf_metadata_decoder_create(const struct ctf_metadata_decoder_config *config) mdec->config = *config; mdec->visitor = ctf_visitor_generate_ir_create(config); if (!mdec->visitor) { - _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Failed to create a CTF IR metadata AST visitor: " - "mdec-addr=%p", - mdec); + BT_CPPLOGE_APPEND_CAUSE_SPEC(mdec->logger, + "Failed to create a CTF IR metadata AST visitor: " + "mdec-addr={}", + fmt::ptr(mdec)); goto error; } - BT_COMP_LOGD("Creating CTF metadata decoder: " - "clock-class-offset-s=%" PRId64 ", " - "clock-class-offset-ns=%" PRId64 ", addr=%p", - config->clock_class_offset_s, config->clock_class_offset_ns, mdec); + BT_CPPLOGD_SPEC(mdec->logger, + "Creating CTF metadata decoder: " + "clock-class-offset-s={}, " + "clock-class-offset-ns={}, addr={}", + config->clock_class_offset_s, config->clock_class_offset_ns, fmt::ptr(mdec)); goto end; error: @@ -160,7 +156,7 @@ void ctf_metadata_decoder_destroy(struct ctf_metadata_decoder *mdec) g_string_free(mdec->text, TRUE); } - BT_COMP_LOGD("Destroying CTF metadata decoder: addr=%p", mdec); + BT_CPPLOGD_SPEC(mdec->logger, "Destroying CTF metadata decoder: addr={}", fmt::ptr(mdec)); ctf_visitor_generate_ir_destroy(mdec->visitor); delete mdec; } @@ -176,23 +172,23 @@ ctf_metadata_decoder_append_content(struct ctf_metadata_decoder *mdec, FILE *fp) bool is_packetized; BT_ASSERT(mdec); - ret = ctf_metadata_decoder_is_packetized(fp, &is_packetized, &mdec->bo, mdec->config.log_level, - mdec->config.self_comp); + ret = ctf_metadata_decoder_is_packetized(fp, &is_packetized, &mdec->bo, mdec->logger); if (ret) { status = CTF_METADATA_DECODER_STATUS_ERROR; goto end; } if (is_packetized) { - BT_COMP_LOGI("Metadata stream is packetized: mdec-addr=%p", mdec); + BT_CPPLOGI_SPEC(mdec->logger, "Metadata stream is packetized: mdec-addr={}", + fmt::ptr(mdec)); ret = ctf_metadata_decoder_packetized_file_stream_to_buf( - fp, &buf, mdec->bo, &mdec->is_uuid_set, mdec->uuid, mdec->config.log_level, - mdec->config.self_comp, mdec->config.self_comp_class); + fp, &buf, mdec->bo, &mdec->is_uuid_set, mdec->uuid, mdec->logger); if (ret) { - _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE( + BT_CPPLOGE_APPEND_CAUSE_SPEC( + mdec->logger, "Cannot decode packetized metadata packets to metadata text: " - "mdec-addr=%p, ret=%d", - mdec, ret); + "mdec-addr={}, ret={}", + fmt::ptr(mdec), ret); status = CTF_METADATA_DECODER_STATUS_ERROR; goto end; } @@ -206,9 +202,10 @@ ctf_metadata_decoder_append_content(struct ctf_metadata_decoder *mdec, FILE *fp) fp = bt_fmemopen(buf, strlen(buf), "rb"); close_fp = true; if (!fp) { - _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Cannot memory-open metadata buffer: %s: " - "mdec-addr=%p", - strerror(errno), mdec); + BT_CPPLOGE_APPEND_CAUSE_SPEC(mdec->logger, + "Cannot memory-open metadata buffer: {}: " + "mdec-addr={}", + strerror(errno), fmt::ptr(mdec)); status = CTF_METADATA_DECODER_STATUS_ERROR; goto end; } @@ -217,11 +214,12 @@ ctf_metadata_decoder_append_content(struct ctf_metadata_decoder *mdec, FILE *fp) ssize_t nr_items; const long init_pos = ftell(fp); - BT_COMP_LOGI("Metadata stream is plain text: mdec-addr=%p", mdec); + BT_CPPLOGI_SPEC(mdec->logger, "Metadata stream is plain text: mdec-addr={}", + fmt::ptr(mdec)); if (init_pos < 0) { - BT_COMP_LOGE_APPEND_CAUSE_ERRNO(BT_COMP_LOG_SELF_COMP, - "Failed to get current file position", "."); + BT_CPPLOGE_ERRNO_APPEND_CAUSE_SPEC(mdec->logger, "Failed to get current file position", + "."); status = CTF_METADATA_DECODER_STATUS_ERROR; goto end; } @@ -229,28 +227,31 @@ ctf_metadata_decoder_append_content(struct ctf_metadata_decoder *mdec, FILE *fp) /* Check text-only metadata header and version */ nr_items = fscanf(fp, "/* CTF %10u.%10u", &major, &minor); if (nr_items < 2) { - BT_COMP_LOGW( + BT_CPPLOGW_SPEC( + mdec->logger, "Missing \"/* CTF major.minor\" signature in plain text metadata file stream: " - "mdec-addr=%p", - mdec); + "mdec-addr={}", + fmt::ptr(mdec)); } - BT_COMP_LOGI("Found metadata stream version in signature: version=%u.%u", major, minor); + BT_CPPLOGI_SPEC(mdec->logger, "Found metadata stream version in signature: version={}.{}", + major, minor); if (!ctf_metadata_decoder_is_packet_version_valid(major, minor)) { - _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE( - "Invalid metadata version found in plain text signature: " - "version=%u.%u, mdec-addr=%p", - major, minor, mdec); + BT_CPPLOGE_APPEND_CAUSE_SPEC(mdec->logger, + "Invalid metadata version found in plain text signature: " + "version={}.{}, mdec-addr={}", + major, minor, fmt::ptr(mdec)); status = CTF_METADATA_DECODER_STATUS_INVAL_VERSION; goto end; } if (fseek(fp, init_pos, SEEK_SET)) { - _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE( - "Cannot seek metadata file stream to initial position: %s: " - "mdec-addr=%p", - strerror(errno), mdec); + BT_CPPLOGE_APPEND_CAUSE_SPEC( + mdec->logger, + "Cannot seek metadata file stream to initial position: {}: " + "mdec-addr={}", + strerror(errno), fmt::ptr(mdec)); status = CTF_METADATA_DECODER_STATUS_ERROR; goto end; } @@ -259,7 +260,7 @@ ctf_metadata_decoder_append_content(struct ctf_metadata_decoder *mdec, FILE *fp) } #if YYDEBUG - if (BT_LOG_ON_TRACE) { + if (mdec->logger.wouldLogT()) { yydebug = 1; } #endif @@ -274,10 +275,10 @@ ctf_metadata_decoder_append_content(struct ctf_metadata_decoder *mdec, FILE *fp) /* Append the metadata text content */ ret = ctf_scanner_append_ast(mdec->scanner, fp); if (ret) { - _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE( - "Cannot create the metadata AST out of the metadata text: " - "mdec-addr=%p", - mdec); + BT_CPPLOGE_APPEND_CAUSE_SPEC(mdec->logger, + "Cannot create the metadata AST out of the metadata text: " + "mdec-addr={}", + fmt::ptr(mdec)); status = CTF_METADATA_DECODER_STATUS_INCOMPLETE; goto end; } @@ -287,27 +288,29 @@ ctf_metadata_decoder_append_content(struct ctf_metadata_decoder *mdec, FILE *fp) BT_ASSERT(start_pos != -1); ret = fseek(fp, start_pos, SEEK_SET); if (ret) { - _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Failed to seek file: ret=%d, mdec-addr=%p", - ret, mdec); + BT_CPPLOGE_APPEND_CAUSE_SPEC(mdec->logger, "Failed to seek file: ret={}, mdec-addr={}", + ret, fmt::ptr(mdec)); status = CTF_METADATA_DECODER_STATUS_ERROR; goto end; } ret = bt_common_append_file_content_to_g_string(mdec->text, fp); if (ret) { - _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Failed to append to current plain text: " - "ret=%d, mdec-addr=%p", - ret, mdec); + BT_CPPLOGE_APPEND_CAUSE_SPEC(mdec->logger, + "Failed to append to current plain text: " + "ret={}, mdec-addr={}", + ret, fmt::ptr(mdec)); status = CTF_METADATA_DECODER_STATUS_ERROR; goto end; } } - ret = ctf_visitor_semantic_check(0, &mdec->scanner->ast->root, &mdec->log_cfg); + ret = ctf_visitor_semantic_check(0, &mdec->scanner->ast->root, mdec->logger); if (ret) { - _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Validation of the metadata semantics failed: " - "mdec-addr=%p", - mdec); + BT_CPPLOGE_APPEND_CAUSE_SPEC(mdec->logger, + "Validation of the metadata semantics failed: " + "mdec-addr={}", + fmt::ptr(mdec)); status = CTF_METADATA_DECODER_STATUS_ERROR; goto end; } @@ -319,16 +322,17 @@ ctf_metadata_decoder_append_content(struct ctf_metadata_decoder *mdec, FILE *fp) /* Success */ break; case -EINCOMPLETE: - BT_COMP_LOGD("While visiting metadata AST: incomplete data: " - "mdec-addr=%p", - mdec); + BT_CPPLOGD_SPEC(mdec->logger, + "While visiting metadata AST: incomplete data: " + "mdec-addr={}", + fmt::ptr(mdec)); status = CTF_METADATA_DECODER_STATUS_INCOMPLETE; goto end; default: - _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE( - "Failed to visit AST node to create CTF IR objects: " - "mdec-addr=%p, ret=%d", - mdec, ret); + BT_CPPLOGE_APPEND_CAUSE_SPEC(mdec->logger, + "Failed to visit AST node to create CTF IR objects: " + "mdec-addr={}, ret={}", + fmt::ptr(mdec), ret); status = CTF_METADATA_DECODER_STATUS_IR_VISITOR_ERROR; goto end; } @@ -341,9 +345,10 @@ end: if (fp && close_fp) { if (fclose(fp)) { - BT_COMP_LOGE("Cannot close metadata file stream: " - "mdec-addr=%p", - mdec); + BT_CPPLOGE_SPEC(mdec->logger, + "Cannot close metadata file stream: " + "mdec-addr={}", + fmt::ptr(mdec)); } } @@ -412,16 +417,16 @@ static enum ctf_metadata_decoder_status find_uuid_in_trace_decl(struct ctf_metad left = ctf_ast_concatenate_unary_strings(&entry_node->u.ctf_expression.left); if (!left) { - _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Cannot concatenate unary strings."); + BT_CPPLOGE_APPEND_CAUSE_SPEC(mdec->logger, "Cannot concatenate unary strings."); status = CTF_METADATA_DECODER_STATUS_ERROR; goto end; } if (strcmp(left, "uuid") == 0) { - ret = ctf_ast_get_unary_uuid(&entry_node->u.ctf_expression.right, uuid, - mdec->config.log_level, mdec->config.self_comp); + ret = + ctf_ast_get_unary_uuid(&entry_node->u.ctf_expression.right, uuid, mdec->logger); if (ret) { - _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid trace's `uuid` attribute."); + BT_CPPLOGE_APPEND_CAUSE_SPEC(mdec->logger, "Invalid trace's `uuid` attribute."); status = CTF_METADATA_DECODER_STATUS_ERROR; goto end; }