zhangmeng
2019-08-30 47adbbbb6651527a7cf7416702d66fa7ddf5c2a9
recover
1个文件已修改
34 ■■■■ 已修改文件
shm.go 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
shm.go
@@ -4,9 +4,7 @@
    "errors"
    "fmt"
    "io"
    "reflect"
    "time"
    "unsafe"
    "basic.com/valib/shm.git"
)
@@ -16,7 +14,7 @@
    rw  *shm.ReadWriteCloser
    typ td
    recvData []byte
    // recvData []byte
}
// Send impl interface Diliver
@@ -51,25 +49,25 @@
    // cur
    // data, err := s.rw.DirectRead()
    // if err == nil || err == io.EOF {
    //     return data, nil
    // }
    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 = maxRecvSize
    // if s.recvData == nil {
    //     s.recvData = make([]byte, maxRecvSize)
    // }
    // sliceHeader := (*reflect.SliceHeader)(unsafe.Pointer(&s.recvData))
    // // sliceHeader.Cap = maxRecvSize
    // sliceHeader.Len = maxRecvSize
    n, err := s.rw.Read(s.recvData)
    if err == nil || err == io.EOF {
        sliceHeader.Len = n
        return s.recvData, nil
    }
    // n, err := s.rw.Read(s.recvData)
    // if err == nil || err == io.EOF {
    //     sliceHeader.Len = n
    //     return s.recvData, nil
    // }
    return nil, err
}