Ngtcp2 学习笔记 (二)

一些基础的头文件和一些数据结构

ngtcp2_conv

uint_8 转换相关,包含获取 id 进制,paket number 相关等一些函数

ngtcp2_crypto

加密相关
ngtcp2_encode_transport_params 加密 transport params
ngtcp2_decode_transport_params 解密 transport params

ngtcp2_macro

宏定义相关
ngtcp2_min min
ngtcp2_max max
ngtcp2_struct_of 成员在结构体里的偏移
ngtcp2_list_insert 在链表头插入一个元素
ngtcp2_list_remove 移出链表头第一个元素

ngtcp2_ringbuf

环形 buffer, 长度为 2 的幂次,多出来会覆盖,使用需要自己写逻辑。元素后进的为头
ngtcp2_ringbuf_init 初始化,长度为 2 的幂次
ngtcp2_ringbuf_free 释放
ngtcp2_ringbuf_push_front 从头部插入一个元素
ngtcp2_ringbuf_pop_front 从头部弹出一个元素
ngtcp2_ringbuf_resize 重新设置已存元素个数
ngtcp2_ringbuf_get 获取任意位置的元素
ngtcp2_ringbuf_len 返回现有长度
ngtcp2_ringbuf_full 判断是否已满

ngtcp2_map

拉链式的 hashmap,自动扩容
ngtcp2_map_entry 基本元素结构体
ngtcp2_map_entry_init 初始化一个基本元素
ngtcp2_map hashmap 结构体
ngtcp2_map_init 初始化,有默认初始大小
ngtcp2_map_free 释放整个 map
ngtcp2_map_each_free 释放 map 里的所有元素,自定义函数
ngtcp2_map_insert 插入函数,自动扩容 2 倍
ngtcp2_map_find 查找函数
ngtcp2_map_remove 删除某个元素
ngtcp2_map_size 返回 map 大小
ngtcp2_map_each 遍历函数,自定义函数

ngtcp2_pq.h

优先队列相关,实现上是一个堆,实际中未使用
ngtcp2_less 自定义 lesser 函数
ngtcp2_pq_entry 基本元素
ngtcp2_pq 优先队列结构体
ngtcp2_pq_init 初始化函数
ngtcp2_pq_free 释放函数
ngtcp2_pq_push 添加元素
ngtcp2_pq_top 返回堆头
ngtcp2_pq_pop 弹出堆头
ngtcp2_pq_empty 判断堆是否为空
ngtcp2_pq_size 返回堆的大小
ngtcp2_pq_update 使用自定义函数更新堆
ngtcp2_pq_each 使用自定义函数遍历堆
ngtcp2_pq_remove 删除堆内的元素

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.