int shell_log_dump_all_cmd(int argc, char **argv) { struct log *log; int rc; log = NULL; while (1) { log = log_list_get_next(log); if (log == NULL) { break; } if (log->l_log->log_type == LOG_TYPE_STREAM) { continue; } console_printf("Dumping log %s\n", log->l_name); rc = log_walk(log, shell_log_dump_entry, NULL); if (rc != 0) { goto err; } } return (0); err: return (rc); }
/** * Log encode entries * @param log structure, the encoder, timestamp, index * @return 0 on success; non-zero on failure */ static int log_encode_entries(struct log *log, struct json_encoder *encoder, int64_t ts, uint32_t index) { int rc; struct encode_off encode_off; int rsp_len; memset(&encode_off, 0, sizeof(encode_off)); /* Already encoded json string */ rsp_len = strlen(encoder->je_encode_buf); /* Pre calculating json length */ rsp_len += (sizeof("entries") + 3); rsp_len += encode_off.rsp_len; if (rsp_len > NMGR_MAX_MTU) { rc = OS_ENOMEM; goto err; } json_encode_array_name(encoder, "entries"); json_encode_array_start(encoder); encode_off.eo_encoder = encoder; encode_off.eo_index = index; encode_off.eo_ts = ts; encode_off.rsp_len = rsp_len; rc = log_walk(log, log_nmgr_encode_entry, &encode_off); json_encode_array_finish(encoder); err: return rc; }
/** * Log encode entries * @param log structure, the encoder, timestamp, index * @return 0 on success; non-zero on failure */ static int log_encode_entries(struct log *log, CborEncoder *cb, int64_t ts, uint32_t index) { int rc; struct encode_off encode_off; int rsp_len = 0; CborEncoder entries; CborError g_err = CborNoError; struct CborCntWriter cnt_writer; CborEncoder cnt_encoder; memset(&encode_off, 0, sizeof(encode_off)); /* this code counts how long the message would be if we encoded * this outer structure using cbor. */ cbor_cnt_writer_init(&cnt_writer); cbor_encoder_init(&cnt_encoder, &cnt_writer.enc, 0); g_err |= cbor_encode_text_stringz(&cnt_encoder, "entries"); g_err |= cbor_encoder_create_array(&cnt_encoder, &entries, CborIndefiniteLength); g_err |= cbor_encoder_close_container(&cnt_encoder, &entries); rsp_len = cbor_encode_bytes_written(cb) + cbor_encode_bytes_written(&cnt_encoder); if (rsp_len > 400) { rc = OS_ENOMEM; goto err; } g_err |= cbor_encode_text_stringz(cb, "entries"); g_err |= cbor_encoder_create_array(cb, &entries, CborIndefiniteLength); encode_off.eo_encoder = &entries; encode_off.eo_index = index; encode_off.eo_ts = ts; encode_off.rsp_len = rsp_len; rc = log_walk(log, log_nmgr_encode_entry, &encode_off); g_err |= cbor_encoder_close_container(cb, &entries); err: return rc; }