Packages
hackney
3.0.2
4.7.2
4.7.1
4.7.0
4.6.1
4.6.0
4.5.2
4.5.1
4.5.0
4.4.5
4.4.3
4.4.2
4.4.1
4.4.0
4.3.0
4.2.3
4.2.2
4.2.1
4.2.0
4.1.0
4.0.3
4.0.2
4.0.1
4.0.0
3.2.1
3.2.0
3.1.2
3.1.1
3.1.0
3.0.3
3.0.2
3.0.1
3.0.0
retired
2.0.1
2.0.0
2.0.0-beta.1
1.25.0
1.24.1
1.24.0
1.23.0
1.22.0
1.21.0
1.20.1
1.20.0
1.19.1
1.19.0
1.18.2
1.18.1
1.18.0
1.17.4
1.17.3
1.17.2
1.17.1
1.17.0
1.16.0
1.15.2
1.15.1
1.15.0
1.14.3
1.14.2
1.14.0
1.13.0
1.12.1
1.12.0
1.11.0
1.10.1
1.10.0
1.9.0
1.8.6
1.8.5
1.8.4
1.8.3
1.8.2
1.8.0
1.7.1
1.7.0
1.6.6
retired
1.6.5
1.6.4
retired
1.6.3
1.6.2
1.6.1
1.6.0
1.5.7
1.5.6
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.4.10
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.2
1.3.1
1.3.0
1.2.0
1.1.0
1.0.6
1.0.5
1.0.2
1.0.1
0.15.2
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.1
Simple HTTP client with HTTP/1.1, HTTP/2, and HTTP/3 support
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
c_src/lsquic/src/liblsquic/lsquic_frab_list.h
/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */
/*
* lsquic_frab_list.h -- List of buffer for simple reading and writing
*
* Useful for buffering data that cannot be packetized immediately.
*/
#ifndef LSQUIC_FRAB_LIST_H
#define LSQUIC_FRAB_LIST_H 1
struct frame_buf
{
TAILQ_ENTRY(frame_buf) frab_next;
unsigned short frab_size,
frab_off,
frab_buf_size; /* Total bytes in frab_buf */
unsigned char frab_buf[0];
};
#define frab_left_to_read(f) ((f)->frab_size - (f)->frab_off)
#define frab_left_to_write(f) ((f)->frab_buf_size - \
(unsigned short) sizeof(*(f)) - (f)->frab_size)
#define frab_write_to(f) ((f)->frab_buf + (f)->frab_size)
TAILQ_HEAD(frame_buf_head, frame_buf);
struct frab_list
{
struct frame_buf_head fl_frabs;
void * (*fl_alloc)(void *alloc_ctx, size_t size);
void (*fl_free)(void *alloc_ctx, void *obj);
void *fl_alloc_ctx;
size_t fl_size; /* Size of payload in frab_list */
unsigned short fl_buf_size; /* Size of frame_buf */
};
void
lsquic_frab_list_init (struct frab_list *, unsigned short buf_size,
void * (*fl_alloc)(void *alloc_ctx, size_t size),
void (*fl_free)(void *alloc_ctx, void *obj), void *fl_alloc_ctx);
void
lsquic_frab_list_cleanup (struct frab_list *);
int
lsquic_frab_list_write (struct frab_list *, const void *, size_t);
size_t
lsquic_frab_list_size (void *);
size_t
lsquic_frab_list_read (void *, void *, size_t);
#define lsquic_frab_list_empty(fral) TAILQ_EMPTY(&(fral)->fl_frabs)
size_t
lsquic_frab_list_mem_used (const struct frab_list *);
#endif