Lines Matching refs:ringbuf
593 static int hd_ringbuf_init(nghttp2_hd_ringbuf *ringbuf, size_t bufsize,
598 ringbuf->buffer = nghttp2_mem_malloc(mem, sizeof(nghttp2_hd_entry *) * size);
599 if (ringbuf->buffer == NULL) {
602 ringbuf->mask = size - 1;
603 ringbuf->first = 0;
604 ringbuf->len = 0;
608 static nghttp2_hd_entry *hd_ringbuf_get(nghttp2_hd_ringbuf *ringbuf,
610 assert(idx < ringbuf->len);
611 return ringbuf->buffer[(ringbuf->first + idx) & ringbuf->mask];
614 static int hd_ringbuf_reserve(nghttp2_hd_ringbuf *ringbuf, size_t bufsize,
620 if (ringbuf->mask + 1 >= bufsize) {
629 for (i = 0; i < ringbuf->len; ++i) {
630 buffer[i] = hd_ringbuf_get(ringbuf, i);
632 nghttp2_mem_free(mem, ringbuf->buffer);
633 ringbuf->buffer = buffer;
634 ringbuf->mask = size - 1;
635 ringbuf->first = 0;
639 static void hd_ringbuf_free(nghttp2_hd_ringbuf *ringbuf, nghttp2_mem *mem) {
641 if (ringbuf == NULL) {
644 for (i = 0; i < ringbuf->len; ++i) {
645 nghttp2_hd_entry *ent = hd_ringbuf_get(ringbuf, i);
650 nghttp2_mem_free(mem, ringbuf->buffer);
653 static int hd_ringbuf_push_front(nghttp2_hd_ringbuf *ringbuf,
657 rv = hd_ringbuf_reserve(ringbuf, ringbuf->len + 1, mem);
663 ringbuf->buffer[--ringbuf->first & ringbuf->mask] = ent;
664 ++ringbuf->len;
669 static void hd_ringbuf_pop_back(nghttp2_hd_ringbuf *ringbuf) {
670 assert(ringbuf->len > 0);
671 --ringbuf->len;