10 #ifndef MSGPACK_VREFBUFFER_H
11 #define MSGPACK_VREFBUFFER_H
17 #if defined(unix) || defined(__unix) || defined(__linux__) || defined(__APPLE__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__QNX__) || defined(__QNXTO__) || defined(__HAIKU__)
60 #ifndef MSGPACK_VREFBUFFER_REF_SIZE
61 #define MSGPACK_VREFBUFFER_REF_SIZE 32
64 #ifndef MSGPACK_VREFBUFFER_CHUNK_SIZE
65 #define MSGPACK_VREFBUFFER_CHUNK_SIZE 8192
70 size_t ref_size,
size_t chunk_size);
74 static inline msgpack_vrefbuffer* msgpack_vrefbuffer_new(
size_t ref_size,
size_t chunk_size);
77 static inline int msgpack_vrefbuffer_write(
void*
data,
const char* buf,
size_t len);
84 const char* buf,
size_t len);
88 const char* buf,
size_t len);
99 static inline msgpack_vrefbuffer* msgpack_vrefbuffer_new(
size_t ref_size,
size_t chunk_size)
102 if (vbuf == NULL)
return NULL;
112 if(vbuf == NULL) {
return; }
117 static inline int msgpack_vrefbuffer_write(
void*
data,
const char* buf,
size_t len)
120 assert(buf ||
len == 0);
124 if(len < vbuf->ref_size) {
138 return (
size_t)(vref->
tail - vref->
array);
MSGPACK_DLLEXPORT int msgpack_vrefbuffer_migrate(msgpack_vrefbuffer *vbuf, msgpack_vrefbuffer *to)
struct msgpack_vrefbuffer msgpack_vrefbuffer
MSGPACK_DLLEXPORT int msgpack_vrefbuffer_append_copy(msgpack_vrefbuffer *vbuf, const char *buf, size_t len)
MSGPACK_DLLEXPORT void msgpack_vrefbuffer_destroy(msgpack_vrefbuffer *vbuf)
MSGPACK_DLLEXPORT void msgpack_vrefbuffer_clear(msgpack_vrefbuffer *vref)
struct msgpack_vrefbuffer_inner_buffer msgpack_vrefbuffer_inner_buffer
struct msgpack_vrefbuffer_chunk msgpack_vrefbuffer_chunk
Definition: vrefbuffer.h:40
MSGPACK_DLLEXPORT int msgpack_vrefbuffer_append_ref(msgpack_vrefbuffer *vbuf, const char *buf, size_t len)
MSGPACK_DLLEXPORT bool msgpack_vrefbuffer_init(msgpack_vrefbuffer *vbuf, size_t ref_size, size_t chunk_size)
Definition: vrefbuffer.h:21
size_t iov_len
Definition: vrefbuffer.h:23
void * iov_base
Definition: vrefbuffer.h:22
Definition: vrefbuffer.h:42
size_t free
Definition: vrefbuffer.h:43
char * ptr
Definition: vrefbuffer.h:44
msgpack_vrefbuffer_chunk * head
Definition: vrefbuffer.h:45
Definition: vrefbuffer.h:48
size_t chunk_size
Definition: vrefbuffer.h:53
msgpack_iovec * tail
Definition: vrefbuffer.h:49
msgpack_iovec * array
Definition: vrefbuffer.h:51
msgpack_iovec * end
Definition: vrefbuffer.h:50
msgpack_vrefbuffer_inner_buffer inner_buffer
Definition: vrefbuffer.h:56
size_t ref_size
Definition: vrefbuffer.h:54
const char * data
Definition: unpack_template.h:94
const char size_t len
Definition: unpack_template.h:94