From 4f3bd6a122917eed4b5a5ead80a05ef9c143e395 Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期五, 30 八月 2019 16:12:20 +0800
Subject: [PATCH] test one data
---
shm.go | 30 +++++++++++++++++++++++++++---
1 files changed, 27 insertions(+), 3 deletions(-)
diff --git a/shm.go b/shm.go
index 64e58e6..0cc0bad 100644
--- a/shm.go
+++ b/shm.go
@@ -4,7 +4,9 @@
"errors"
"fmt"
"io"
+ "reflect"
"time"
+ "unsafe"
"basic.com/valib/shm.git"
)
@@ -13,6 +15,8 @@
type SHM struct {
rw *shm.ReadWriteCloser
typ td
+
+ recvData []byte
}
// Send impl interface Diliver
@@ -36,6 +40,8 @@
return nil, errors.New("please open shm consumer first")
}
+ // orig
+
// data := make([]byte, maxRecvSize)
// n, err := s.rw.Read(data)
// if err == nil || err == io.EOF {
@@ -43,10 +49,28 @@
// return data, nil
// }
- data, err := s.rw.DirectRead()
- if err == nil || err == io.EOF {
- return data, nil
+ // cur
+
+ // data, err := s.rw.DirectRead()
+ // if err == nil || err == io.EOF {
+ // return data, nil
+ // }
+
+ // new
+
+ if s.recvData == nil {
+ s.recvData = make([]byte, maxRecvSize)
}
+ sliceHeader := (*reflect.SliceHeader)(unsafe.Pointer(&s.recvData))
+ sliceHeader.Cap = maxRecvSize
+ sliceHeader.Len = 0
+
+ n, err := s.rw.Read(s.recvData)
+ if err == nil || err == io.EOF {
+ sliceHeader.Len = n
+ return s.recvData, nil
+ }
+
return nil, err
}
--
Gitblit v1.8.0