554325746@qq.com
2019-08-22 be392a6596e481d82032d85060d1a072d327e3f4
test shm
1个文件已修改
27 ■■■■■ 已修改文件
shm.go 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
shm.go
@@ -1,10 +1,9 @@
package deliver
import (
    "bytes"
    "errors"
    "fmt"
    "io"
    // "io"
    "time"
@@ -13,8 +12,10 @@
// SHM share memory
type SHM struct {
    rw      *shm.ReadWriteCloser
    typ     td
    rw  *shm.ReadWriteCloser
    typ td
    data []byte
}
// Send impl interface Diliver
@@ -52,18 +53,18 @@
        return nil, errors.New("please open shm consumer first")
    }
    ch := make(chan []byte)
    ch := make(chan int)
    go func(){
        buffer := new(bytes.Buffer)
        _, err := s.rw.WriteTo(buffer)
        if err == nil || err == io.EOF {
            ch <- buffer.Bytes()
        }
        ch <- nil
        n, _ := s.rw.Read(s.data)
        ch <- n
    }()
    select{
    case d := <-ch:
        return d, nil
        if d > 0{
            data := make([]byte, d)
            copy(data, s.data)
            return data, nil
        }
    case <- time.After(3 * time.Second):
        return nil, errors.New("recv time out")
    }
@@ -123,6 +124,7 @@
        return &SHM{
            rw,
            agent,
            make([]byte, maxRecvSize),
        }, nil
    }
@@ -139,6 +141,7 @@
        return &SHM{
            rw,
            coactee,
            make([]byte, maxRecvSize),
        }, nil
    }
    return nil, err