lsquic_types.h revision a74702c6
1/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */ 2#ifndef __LSQUIC_TYPES_H__ 3#define __LSQUIC_TYPES_H__ 4 5/** 6 * @file 7 * LSQUIC types. 8 */ 9 10#include <stdint.h> 11#include <sys/types.h> 12 13#define MAX_CID_LEN 20 14#define GQUIC_CID_LEN 8 15 16/** 17 * Connection ID 18 */ 19typedef struct lsquic_cid 20{ 21 uint_fast8_t len; 22 union { 23 uint8_t buf[MAX_CID_LEN]; 24 uint64_t id; 25 } u_cid; 26#define idbuf u_cid.buf 27} 28lsquic_cid_t; 29 30 31#define LSQUIC_CIDS_EQ(a, b) ((a)->len == 8 ? \ 32 (b)->len == 8 && (a)->u_cid.id == (b)->u_cid.id : \ 33 (a)->len == (b)->len && 0 == memcmp((a)->idbuf, (b)->idbuf, (a)->len)) 34 35/** Stream ID */ 36typedef uint64_t lsquic_stream_id_t; 37 38/** LSQUIC engine */ 39typedef struct lsquic_engine lsquic_engine_t; 40 41/** Connection */ 42typedef struct lsquic_conn lsquic_conn_t; 43 44/** Connection context. This is the return value of @ref on_new_conn. */ 45typedef struct lsquic_conn_ctx lsquic_conn_ctx_t; 46 47/** Stream */ 48typedef struct lsquic_stream lsquic_stream_t; 49 50/** Stream context. This is the return value of @ref on_new_stream. */ 51typedef struct lsquic_stream_ctx lsquic_stream_ctx_t; 52 53/** HTTP headers */ 54typedef struct lsquic_http_headers lsquic_http_headers_t; 55 56#endif 57