From a7b93ee3558e6da945991d61f64b4c7b44dd132f Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期一, 26 八月 2019 16:58:01 +0800
Subject: [PATCH] add direct read
---
readwriter.go | 34 +++++++++++++++++++++++++++++++++-
1 files changed, 33 insertions(+), 1 deletions(-)
diff --git a/readwriter.go b/readwriter.go
index 523a605..c383769 100644
--- a/readwriter.go
+++ b/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 {
--
Gitblit v1.8.0