Avro C:如何初始化avro_wrapped_buffer_t?

时间:2018-09-21 14:51:16

标签: avro

如果我满足以下条件:

avro_value_set_string(field,value); 
// where value is a char * (c-string)

那我如何将字节提供给avro?


文档中的内容如下:

avro_value_give_string_len(avro_value_t *field, avro_wrapped_buffer_t *src);

将把这些字节提供给avro,然后它将整理这些字节-我不再需要释放它们。

同时,它定义了avro_wrapped_buffer_t

typedef struct avro_wrapped_buffer {
    const void  *buf;
    size_t  size;
    void (*free)(avro_wrapped_buffer_t *self);
    int (*copy)(avro_wrapped_buffer_t *dest,
                const avro_wrapped_buffer_t *src,
                size_t offset, size_t length);
    int (*slice)(avro_wrapped_buffer_t *self,
                 size_t offset, size_t length);
} avro_wrapped_buffer_t;

但是它没有提供初始化函数或其他有关如何构造avro_wrapped_buffer_t的指示。

由于使用fieldbranch设置值仅在我简单定义它们并将它们传递给avro函数时起作用,因此我尝试了以下操作:

char * value = "something";

avro_wrapped_buffer_t buf;

buf.buf = value;

avro_value_give_string_len(field,&buf);

哪个没有用。如何利用avro缓冲区来避免将数据多余地复制到avro中?

0 个答案:

没有答案