From 020e17cc5311d091d713eb4fabae2a3d50944916 Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期二, 27 八月 2019 13:13:33 +0800
Subject: [PATCH] add shm interface 2

---
 shm.go     |   18 ++++++++++++++++--
 deliver.go |    3 +++
 nng.go     |    6 ++++++
 3 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/deliver.go b/deliver.go
index c22dc79..465a6c1 100644
--- a/deliver.go
+++ b/deliver.go
@@ -11,6 +11,9 @@
 	// Recv recv data
 	Recv() ([]byte, error)
 
+	// Recv2 recv to param
+	Recv2([]byte) error
+
 	// Close close Deliver
 	Close()
 }
diff --git a/nng.go b/nng.go
index 5122398..0e89b6f 100644
--- a/nng.go
+++ b/nng.go
@@ -79,6 +79,12 @@
 
 }
 
+// Recv2 impl interface
+func (n *NNG) Recv2(data []byte) (err error) {
+	data, err = n.Recv()
+	return err
+}
+
 // Close impl interface Deliver
 func (n *NNG) Close() {
 	if n != nil && n.sock != nil {
diff --git a/shm.go b/shm.go
index 7997e7d..602bcfa 100644
--- a/shm.go
+++ b/shm.go
@@ -39,8 +39,7 @@
 	// data := make([]byte, maxRecvSize)
 	// n, err := s.rw.Read(data)
 	// if err == nil || err == io.EOF {
-	// 	data := make([]byte, maxRecvSize)
-	// 	copy(data, s.recvData)
+	// 	data := data[:n:n]
 	// 	return data, nil
 	// }
 
@@ -51,6 +50,21 @@
 	return nil, err
 }
 
+// Recv2 impl interface
+func (s *SHM) Recv2(data []byte) error {
+	if s == nil || s.rw == nil {
+		return errors.New("please open shm consumer first")
+	}
+
+	n, err := s.rw.Read(data)
+	if err == nil || err == io.EOF {
+		data = data[:n:n]
+		return nil
+	}
+
+	return err
+}
+
 // Close impl interface Deliver
 func (s *SHM) Close() {
 	if s == nil {

--
Gitblit v1.8.0