mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-22 11:03:12 +00:00
28 lines
1.0 KiB
C
28 lines
1.0 KiB
C
#ifndef MREAD_RINGBUFFER_H
|
|
#define MREAD_RINGBUFFER_H
|
|
|
|
struct ringbuffer;
|
|
|
|
struct ringbuffer_block {
|
|
int length;
|
|
int offset;
|
|
int id;
|
|
int next;
|
|
};
|
|
|
|
struct ringbuffer * ringbuffer_new(int size);
|
|
void ringbuffer_delete(struct ringbuffer * rb);
|
|
void ringbuffer_link(struct ringbuffer *rb , struct ringbuffer_block * prev, struct ringbuffer_block * next);
|
|
struct ringbuffer_block * ringbuffer_alloc(struct ringbuffer * rb, int size);
|
|
int ringbuffer_collect(struct ringbuffer * rb);
|
|
void ringbuffer_resize(struct ringbuffer * rb, struct ringbuffer_block * blk, int size);
|
|
void ringbuffer_free(struct ringbuffer * rb, struct ringbuffer_block * blk);
|
|
int ringbuffer_data(struct ringbuffer * rb, struct ringbuffer_block * blk, int size, int skip, void **ptr);
|
|
void * ringbuffer_copy(struct ringbuffer * rb, struct ringbuffer_block * from, int skip, struct ringbuffer_block * to);
|
|
struct ringbuffer_block * ringbuffer_yield(struct ringbuffer * rb, struct ringbuffer_block *blk, int skip);
|
|
|
|
void ringbuffer_dump(struct ringbuffer * rb);
|
|
|
|
#endif
|
|
|