554325746@qq.com
2019-08-21 fa89b4cd58f4b71fdcda3736e10ded1bad263aaf
add shm timeout
1个文件已修改
47 ■■■■ 已修改文件
shm.go 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
shm.go
@@ -5,6 +5,8 @@
    "fmt"
    "io"
    "time"
    "github.com/tmthrgd/shm-go"
)
@@ -20,12 +22,26 @@
        return errors.New("please init shm producer first")
    }
    n, err := s.rw.Write(data)
    if n < 1 {
        fmt.Println("recv data less than 1 length")
    ch := make(chan int)
    go func(){
        n, _ := s.rw.Write(data)
        ch <- n
    }()
    select{
    case <-ch:
        return nil
    case <- time.After(3 * time.Second):
        return errors.New("send time out")
    }
    return err
    return errors.New("send should't here")
    // n, err := s.rw.Write(data)
    // if n < 1 {
    //     fmt.Println("recv data less than 1 length")
    // }
    // return err
}
// Recv impl interface Diliver
@@ -35,14 +51,33 @@
        return nil, errors.New("please open shm consumer first")
    }
    ch := make(chan []byte)
    go func(){
    data := make([]byte, maxRecvSize)
    n, err := s.rw.Read(data)
    if err == nil || err == io.EOF {
        data = data[:n:n]
        return data, nil
        }
        ch <- data
    }()
    select{
    case d := <-ch:
        return d, nil
    case <- time.After(3 * time.Second):
        return nil, errors.New("recv time out")
    }
    return nil, err
    return nil, errors.New("recv should't here")
    // data := make([]byte, maxRecvSize)
    // n, err := s.rw.Read(data)
    // if err == nil || err == io.EOF {
    //     data = data[:n:n]
    //     return data, nil
    // }
    // return nil, err
}
// Close impl interface Deliver