Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewDelimitedWriter ¶
func NewDelimitedWriter(w io.Writer) pbio.WriteCloser
NewDelimitedWriter 创建一个新的分隔消息写入器
参数:
- w: io.Writer 底层写入器
返回值:
- pbio.WriteCloser 新创建的分隔消息写入器
func PeerInfoToPeerV2 ¶
PeerInfoToPeerV2 将 AddrInfo 转换为 protobuf 格式的 Peer 参数:
- pi: peer.AddrInfo 要转换的 AddrInfo 对象
返回值:
- *pbv2.Peer 转换后的 protobuf 格式 Peer 对象
Types ¶
type DelimitedReader ¶
type DelimitedReader struct {
// contains filtered or unexported fields
}
DelimitedReader 实现了一个无缓冲的分隔消息读取器
func NewDelimitedReader ¶
func NewDelimitedReader(r io.Reader, maxSize int) *DelimitedReader
NewDelimitedReader 创建一个新的分隔消息读取器 gogo protobuf 的 NewDelimitedReader 是有缓冲的,可能会吞掉流数据 所以我们需要实现一个兼容的无缓冲读取器 无缓冲读取会导致性能下降:读取消息时需要多次单字节读取来获取长度,再读取一次获取消息内容 但这种性能下降并不严重,因为:
- 读取器在握手阶段只读取一到两条消息(dialer/stop或hop),相对于连接生命周期来说微不足道
- 消息很小(最大4k),长度只占用几个字节,所以每条消息最多只需要三次读取
参数:
- r: io.Reader 底层读取器
- maxSize: int 最大消息大小
返回值:
- *DelimitedReader 新创建的分隔消息读取器
func (*DelimitedReader) Close ¶
func (d *DelimitedReader) Close()
Close 关闭读取器并释放缓冲区
注意:
- 会将内部缓冲区归还到内存池
func (*DelimitedReader) ReadByte ¶
func (d *DelimitedReader) ReadByte() (byte, error)
ReadByte 读取单个字节
返回值:
- byte: 读取的字节
- error: 读取过程中的错误
Click to show internal directories.
Click to hide internal directories.