46typedef struct BufRingNode BufRingNode;
47typedef struct BufRingNode {
55typedef struct BufRing {
72typedef bool (*
bufringZCCB)(_In_reads_bytes_(bytes)
const uint8* buf,
size_t bytes,
73 _Pre_opt_valid_
void* ctx);
89typedef size_t (*
bufringFeedCB)(_Out_writes_bytes_(maxbytes) uint8* buf,
size_t maxbytes,
90 _Pre_opt_valid_
void* ctx);
112size_t bufringRead(_Inout_ BufRing* ring, _Out_writes_bytes_(bytes) uint8* buf,
size_t bytes);
126 buf->len =
bufringRead(ring, buf->data, min(buf->sz, maxbytes));
141size_t bufringPeek(_Inout_ BufRing* ring, _Out_writes_bytes_(bytes) uint8* buf,
size_t off,
159 buf->len =
bufringPeek(ring, buf->data, off, min(buf->sz, maxbytes));
203void bufringWrite(_Inout_ BufRing* ring, _In_reads_bytes_(bytes)
const uint8* buf,
size_t bytes);
Simple buffer management.
Comparison and clamping macros.
size_t bufringReadBuf(BufRing *ring, Buffer buf, size_t maxbytes)
void bufringWrite(BufRing *ring, const uint8 *buf, size_t bytes)
size_t bufringPeekBuf(BufRing *ring, Buffer buf, size_t off, size_t maxbytes)
size_t bufringSkip(BufRing *ring, size_t bytes)
bool(* bufringZCCB)(const uint8 *buf, size_t bytes, void *ctx)
void bufringInit(BufRing *ring, size_t segsz)
size_t bufringReadZC(BufRing *ring, size_t bytes, bufringZCCB cb, void *ctx)
void bufringWriteBuf(BufRing *ring, Buffer buf)
size_t(* bufringFeedCB)(uint8 *buf, size_t maxbytes, void *ctx)
size_t bufringPeek(BufRing *ring, uint8 *buf, size_t off, size_t bytes)
size_t bufringRead(BufRing *ring, uint8 *buf, size_t bytes)
void bufringDestroy(BufRing *ring)
void bufringWriteZC(BufRing *ring, Buffer *buf)
size_t bufringFeed(BufRing *ring, bufringFeedCB feed, size_t bytes, void *ctx)
size_t bufringWriteSpace(BufRing *ring)