本文整理汇总了Golang中net.UnixConn.SetReadDeadline方法的典型用法代码示例。如果您正苦于以下问题:Golang UnixConn.SetReadDeadline方法的具体用法?Golang UnixConn.SetReadDeadline怎么用?Golang UnixConn.SetReadDeadline使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类net.UnixConn
的用法示例。
在下文中一共展示了UnixConn.SetReadDeadline方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: run_queue
func (r *fake_conn) run_queue(conn *net.UnixConn) {
defer conn.Close()
for {
select {
case <-r.end:
return
default:
buffer := make([]byte, 1<<16)
conn.SetReadDeadline(time.Now().Add(1000 * time.Millisecond))
s, _, err := conn.ReadFrom(buffer)
switch t_err := err.(type) {
case nil:
case net.Error:
if !t_err.Timeout() {
panic(err)
}
default:
panic(err)
}
if s > 0 {
r.queue <- buffer[0:s]
}
}
}
}
示例2: ReadFile
func ReadFile(c *net.UnixConn, timeout time.Duration) (*os.File, error) {
oob := make([]byte, 64)
if timeout > 0 {
deadline := time.Now().Add(timeout)
if err := c.SetReadDeadline(deadline); err != nil {
return nil, err
}
}
_, oobn, flags, _, err := c.ReadMsgUnix(nil, oob)
if err != nil {
return nil, err
}
if flags != 0 || oobn <= 0 {
panic("ReadMsgUnix: flags != 0 || oobn <= 0")
}
// file descriptors are now open in this process
scm, err := syscall.ParseSocketControlMessage(oob[:oobn])
if err != nil {
return nil, err
}
if len(scm) != 1 {
panic("invalid scm message")
}
fds, err := syscall.ParseUnixRights(&scm[0])
if err != nil {
return nil, err
}
if len(fds) != 1 {
panic("invalid scm message")
}
return os.NewFile(uintptr(fds[0]), ""), nil
}