コード例 #1
0
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);
}
コード例 #2
0
/**
 * 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;
}
コード例 #3
0
/**
 * 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;
}