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