add cluster i/o pipeline
This commit is contained in:
44
src/create.c
44
src/create.c
@@ -1,9 +1,10 @@
|
||||
#include "bin.h"
|
||||
#include "commands.h"
|
||||
|
||||
#include <blue/cmd.h>
|
||||
#include <zstd.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <zstd.h>
|
||||
|
||||
enum {
|
||||
ARG_INPATH,
|
||||
@@ -18,7 +19,22 @@ static int create(
|
||||
{
|
||||
const char *in_path = NULL, *out_path = NULL;
|
||||
|
||||
b_arglist_get_string(opt, B_COMMAND_INVALID_ID, ARG_INPATH, 0, &in_path);
|
||||
printf("cluster group = %zu\n", sizeof(struct ec3_cluster_group));
|
||||
printf("chunk group = %zu\n", sizeof(struct ec3_chunk_group));
|
||||
printf("vnode group = %zu\n", sizeof(struct ec3_vnode_group));
|
||||
printf("vnch group = %zu\n", sizeof(struct ec3_vnode_chunk_group));
|
||||
printf("vnode = %zu\n", sizeof(struct ec3_vnode));
|
||||
printf("chunk = %zu\n", sizeof(struct ec3_chunk));
|
||||
printf("link = %zu\n", sizeof(struct ec3_vnode_chunk));
|
||||
|
||||
return 0;
|
||||
|
||||
b_arglist_get_string(
|
||||
opt,
|
||||
B_COMMAND_INVALID_ID,
|
||||
ARG_INPATH,
|
||||
0,
|
||||
&in_path);
|
||||
b_arglist_get_string(opt, OPT_OUTPATH, OPT_OUTPATH_PATH, 0, &out_path);
|
||||
|
||||
printf("in path: %s\n", in_path);
|
||||
@@ -61,17 +77,23 @@ static int create(
|
||||
total += r;
|
||||
|
||||
bool last_chunk = r < in_bufsz;
|
||||
ZSTD_EndDirective mode = last_chunk ? ZSTD_e_end : ZSTD_e_continue;
|
||||
ZSTD_EndDirective mode
|
||||
= last_chunk ? ZSTD_e_end : ZSTD_e_continue;
|
||||
|
||||
ZSTD_inBuffer input = { in_buf, r, 0 };
|
||||
ZSTD_inBuffer input = {in_buf, r, 0};
|
||||
int finished;
|
||||
do {
|
||||
ZSTD_outBuffer output = { out_buf, out_bufsz, 0 };
|
||||
size_t remaining = ZSTD_compressStream2(zstd, &output, &input, mode);
|
||||
|
||||
ZSTD_outBuffer output = {out_buf, out_bufsz, 0};
|
||||
size_t remaining = ZSTD_compressStream2(
|
||||
zstd,
|
||||
&output,
|
||||
&input,
|
||||
mode);
|
||||
|
||||
fwrite(out_buf, 1, output.pos, out);
|
||||
|
||||
finished = last_chunk ? (remaining == 0) : (input.pos == input.size);
|
||||
finished = last_chunk ? (remaining == 0)
|
||||
: (input.pos == input.size);
|
||||
} while (!finished);
|
||||
|
||||
if (last_chunk) {
|
||||
@@ -111,12 +133,14 @@ B_COMMAND(CMD_CREATE, CMD_ROOT)
|
||||
}
|
||||
}
|
||||
|
||||
B_COMMAND_ARG(ARG_INPATH) {
|
||||
B_COMMAND_ARG(ARG_INPATH)
|
||||
{
|
||||
B_ARG_NAME("input file");
|
||||
B_ARG_NR_VALUES(1);
|
||||
}
|
||||
|
||||
B_COMMAND_USAGE() {
|
||||
B_COMMAND_USAGE()
|
||||
{
|
||||
B_COMMAND_USAGE_ARG(ARG_INPATH);
|
||||
B_COMMAND_USAGE_OPT(OPT_OUTPATH);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user