zhangmeng
2019-08-26 a7b93ee3558e6da945991d61f64b4c7b44dd132f
add direct read
1个文件已修改
34 ■■■■■ 已修改文件
readwriter.go 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
readwriter.go
@@ -56,8 +56,40 @@
    return rw.name
}
// Read
// DirectRead create byte in func
func (rw *ReadWriteCloser) DirectRead() ([]byte, error) {
    buf, err := rw.GetReadBuffer()
    if err != nil {
        return nil, err
    }
    data := make([]byte, len(buf.Data))
    copy(data, buf.Data)
    isEOF := buf.Flags[eofFlagIndex]&eofFlagMask != 0
    if err = rw.SendReadBuffer(buf); err != nil {
        return nil, err
    }
    if isEOF {
        return nil, io.EOF
    }
    return data, nil
}
// Peek get length
func (rw *ReadWriteCloser) Peek() (n int, err error) {
    buf, err := rw.GetReadBuffer()
    if err != nil {
        return 0, err
    }
    return len(buf.Data), nil
}
// Read
func (rw *ReadWriteCloser) Read(p []byte) (n int, err error) {
    buf, err := rw.GetReadBuffer()
    if err != nil {