Lines Matching defs:rb

46 int nghttp3_ringbuf_init(nghttp3_ringbuf *rb, size_t nmemb, size_t size,
55 rb->buf = nghttp3_mem_malloc(mem, nmemb * size);
56 if (rb->buf == NULL) {
60 rb->buf = NULL;
63 rb->mem = mem;
64 rb->nmemb = nmemb;
65 rb->size = size;
66 rb->first = 0;
67 rb->len = 0;
72 void nghttp3_ringbuf_free(nghttp3_ringbuf *rb) {
73 if (rb == NULL) {
77 nghttp3_mem_free(rb->mem, rb->buf);
80 void *nghttp3_ringbuf_push_front(nghttp3_ringbuf *rb) {
81 rb->first = (rb->first - 1) & (rb->nmemb - 1);
82 rb->len = nghttp3_min(rb->nmemb, rb->len + 1);
84 return (void *)&rb->buf[rb->first * rb->size];
87 void *nghttp3_ringbuf_push_back(nghttp3_ringbuf *rb) {
88 size_t offset = (rb->first + rb->len) & (rb->nmemb - 1);
90 if (rb->len == rb->nmemb) {
91 rb->first = (rb->first + 1) & (rb->nmemb - 1);
93 ++rb->len;
96 return (void *)&rb->buf[offset * rb->size];
99 void nghttp3_ringbuf_pop_front(nghttp3_ringbuf *rb) {
100 rb->first = (rb->first + 1) & (rb->nmemb - 1);
101 --rb->len;
104 void nghttp3_ringbuf_pop_back(nghttp3_ringbuf *rb) {
105 assert(rb->len);
106 --rb->len;
109 void nghttp3_ringbuf_resize(nghttp3_ringbuf *rb, size_t len) {
110 assert(len <= rb->nmemb);
111 rb->len = len;
114 void *nghttp3_ringbuf_get(nghttp3_ringbuf *rb, size_t offset) {
115 assert(offset < rb->len);
116 offset = (rb->first + offset) & (rb->nmemb - 1);
117 return &rb->buf[offset * rb->size];
120 int nghttp3_ringbuf_full(nghttp3_ringbuf *rb) { return rb->len == rb->nmemb; }
122 int nghttp3_ringbuf_reserve(nghttp3_ringbuf *rb, size_t nmemb) {
125 if (rb->nmemb >= nmemb) {
135 buf = nghttp3_mem_malloc(rb->mem, nmemb * rb->size);
140 if (rb->buf != NULL) {
141 if (rb->first + rb->len <= rb->nmemb) {
142 memcpy(buf, rb->buf + rb->first * rb->size, rb->len * rb->size);
143 rb->first = 0;
145 memcpy(buf, rb->buf + rb->first * rb->size,
146 (rb->nmemb - rb->first) * rb->size);
147 memcpy(buf + (rb->nmemb - rb->first) * rb->size, rb->buf,
148 (rb->len - (rb->nmemb - rb->first)) * rb->size);
149 rb->first = 0;
152 nghttp3_mem_free(rb->mem, rb->buf);
155 rb->buf = buf;
156 rb->nmemb = nmemb;