Loading...
Searching...
No Matches
qpack.h
Go to the documentation of this file.
1
12#ifndef IMQUIC_QPACK_H
13#define IMQUIC_QPACK_H
14
15#include <stdint.h>
16
17#include <glib.h>
18
20typedef struct imquic_qpack_entry {
22 uint16_t id;
24 const char *name;
26 const char *value;
32imquic_qpack_entry *imquic_qpack_entry_create(const char *name, const char *value);
40
43
62
77
81
87size_t imquic_qpack_decode(imquic_qpack_context *ctx, uint8_t *bytes, size_t blen);
96GList *imquic_qpack_process(imquic_qpack_context *ctx, uint8_t *bytes, size_t blen, size_t *bread);
106int imquic_qpack_encode(imquic_qpack_context *ctx, GList *headers, uint8_t *bytes, size_t *blen, uint8_t *qenc, size_t *qenclen);
108
109#endif
imquic_huffman_bits table[]
Table mapping each ascii code to its Huffman code representation.
Definition huffman.h:446
imquic_qpack_dynamic_table * imquic_qpack_dynamic_table_create(size_t capacity)
Create a new dynamic table.
Definition qpack.c:123
size_t imquic_qpack_entry_size(imquic_qpack_entry *entry)
Helper to calculate the size of this entry.
Definition qpack.c:113
struct imquic_qpack_entry imquic_qpack_entry
Name-value entry we can have in the static or dynamic tables.
int imquic_qpack_encode(imquic_qpack_context *ctx, GList *headers, uint8_t *bytes, size_t *blen, uint8_t *qenc, size_t *qenclen)
Encode outgoing QPACK encoder data.
Definition qpack.c:584
size_t imquic_qpack_decode(imquic_qpack_context *ctx, uint8_t *bytes, size_t blen)
Decode incoming QPACK encoder data.
Definition qpack.c:229
imquic_qpack_context * imquic_qpack_context_create(size_t capacity)
Create a new QPACK context.
Definition qpack.c:143
imquic_qpack_entry imquic_qpack_static_table[]
Static table.
Definition qpack.c:715
GList * imquic_qpack_process(imquic_qpack_context *ctx, uint8_t *bytes, size_t blen, size_t *bread)
Decode an incoming QPACK request.
Definition qpack.c:374
struct imquic_qpack_context imquic_qpack_context
QPACK context.
struct imquic_qpack_dynamic_table imquic_qpack_dynamic_table
Dynamic table.
void imquic_qpack_context_destroy(imquic_qpack_context *ctx)
Destroy an existing QPACK context.
Definition qpack.c:150
imquic_qpack_entry * imquic_qpack_entry_create(const char *name, const char *value)
Create a new entry out of provided name and value.
Definition qpack.c:97
void imquic_qpack_dynamic_table_destroy(imquic_qpack_dynamic_table *table)
Destroy an existing dynamic table.
Definition qpack.c:133
void imquic_qpack_entry_destroy(imquic_qpack_entry *entry)
Destroy an existing entry.
Definition qpack.c:105
QPACK context.
Definition qpack.h:64
imquic_qpack_dynamic_table * ltable
Local dynamic table (updated by us via the local encoder stream)
Definition qpack.h:66
imquic_qpack_dynamic_table * rtable
Remote dynamic table (updated by the remote encoder stream)
Definition qpack.h:68
Dynamic table.
Definition qpack.h:45
size_t capacity
Size as advertized, and current size.
Definition qpack.h:47
GHashTable * table_byid
Hashtable (indexed by ID)
Definition qpack.h:51
uint16_t index
Current index.
Definition qpack.h:49
GList * list
List of entries, ordered by insertion.
Definition qpack.h:53
size_t size
Definition qpack.h:47
Name-value entry we can have in the static or dynamic tables.
Definition qpack.h:20
uint16_t id
ID (for static or dynamic table)
Definition qpack.h:22
const char * value
Value.
Definition qpack.h:26
const char * name
Name.
Definition qpack.h:24