zhangmeng
2019-08-26 20a4c4bfb5b9ea427f9117408ff0e4513ebef9eb
use shm direct read
1个文件已修改
28 ■■■■ 已修改文件
shm.go 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
shm.go
@@ -13,8 +13,6 @@
type SHM struct {
    rw  *shm.ReadWriteCloser
    typ td
    recvData []byte
}
// Send impl interface Diliver
@@ -38,16 +36,18 @@
        return nil, errors.New("please open shm consumer first")
    }
    if s.recvData == nil {
        s.recvData = make([]byte, maxRecvSize)
    }
    n, err := s.rw.Read(s.recvData)
    // data := make([]byte, maxRecvSize)
    // n, err := s.rw.Read(data)
    // if err == nil || err == io.EOF {
    //     data := make([]byte, maxRecvSize)
    //     copy(data, s.recvData)
    //     return data, nil
    // }
    data, err := s.rw.DirectRead()
    if err == nil || err == io.EOF {
        data := make([]byte, n)
        copy(data, s.recvData)
        return data, nil
    }
    return nil, err
}
@@ -93,9 +93,8 @@
    if err == nil {
        fmt.Println(rw.Name())
        return &SHM{
            rw:       rw,
            typ:      agent,
            recvData: nil,
            rw:  rw,
            typ: agent,
        }, nil
    }
@@ -110,9 +109,8 @@
    rw, err := shm.OpenSimplex(url)
    if err == nil {
        return &SHM{
            rw:       rw,
            typ:      coactee,
            recvData: nil,
            rw:  rw,
            typ: coactee,
        }, nil
    }
    return nil, err