# Functions
NewDelimitedReader 创建一个新的分隔消息读取器 gogo protobuf 的 NewDelimitedReader 是有缓冲的,可能会吞掉流数据 所以我们需要实现一个兼容的无缓冲读取器 无缓冲读取会导致性能下降:读取消息时需要多次单字节读取来获取长度,再读取一次获取消息内容 但这种性能下降并不严重,因为: - 读取器在握手阶段只读取一到两条消息(dialer/stop或hop),相对于连接生命周期来说微不足道 - 消息很小(最大4k),长度只占用几个字节,所以每条消息最多只需要三次读取
参数: - r: io.Reader 底层读取器 - maxSize: int 最大消息大小
返回值: - *DelimitedReader 新创建的分隔消息读取器.
NewDelimitedWriter 创建一个新的分隔消息写入器
参数: - w: io.Writer 底层写入器
返回值: - pbio.WriteCloser 新创建的分隔消息写入器.
PeerInfoToPeerV2 将 AddrInfo 转换为 protobuf 格式的 Peer 参数: - pi: peer.AddrInfo 要转换的 AddrInfo 对象
返回值: - *pbv2.Peer 转换后的 protobuf 格式 Peer 对象.
PeerToPeerInfoV2 将 protobuf 格式的 Peer 转换为 AddrInfo 参数: - p: *pbv2.Peer protobuf 格式的 Peer 对象
返回值: - peer.AddrInfo 转换后的 AddrInfo 对象 - error 转换过程中的错误.
# Structs
DelimitedReader 实现了一个无缓冲的分隔消息读取器.