00.webserver源码阅读--buffer
buffer
缓冲区封装类,避免对char数组的直接操作,晦涩难懂。
主要通过一些指针来指明读写位置,底层存储为
vector<char>.buffer在本项目中的主要应用:log模块、http模块
成员变量
- std::vector< char> buf
- 本质上buffer还是char数组
- std::atomic< std::size_t> read_pos
- 读的位置
- std::atomic< std::size_t> write_pos
- 写的位置
(219条消息) 【C++】atomic简介_林多的博客-CSDN博客_atomic函数
成员函数
-
构造函数
- 根据传入参数决定char数组大小,将read_pos和write_pos置为0
-
析构函数
- default关键字。即采用默认生成的析构函数。(219条消息) C++中的 =default和=delete_一倾而尽的博客-CSDN博客_= default
-
writable_bytes
- 返回可以写的字节(字符)数
-
readable_bytes
- 返回可以读的字节(字符)数
-
prependable_bytes
- 返回在read_pos之前已占用的字符数
-
peek
- 返回read_pos对应char数组的指针
-
ensure_writable
- 确定数组可用空间大于len(不够,就调用make_space来扩展数组)
-
has_written
- 根据写入内容的长度,移动write_pos
-
retrieve
- 根据已读内容的长度,移动read_pos
-
retrieve_until
- 将read_pos移动到end的前一个位置
-
retrieve_all
- 数组置0,read_pos和write_pos置为0
-
retrieve_all_to_str
- 将可读内容转为string
-
begin_write_const和begin_write
- 返回write_pos对应的char数组指针
-
append
- 将传入内容写的char数组
-
read_fd
- 通过readv(集中读)来将fd的内容读到数组
-
write_fd
- 将char数组可读内容写到fd
-
begin_ptr
- 返回char数组的起始指针
-
make_space
- 若剩余的空间小于len,则通过vector的resize函数进行扩容
- 否则,通过移动char数组的内容来挪出空间

浙公网安备 33010602011771号