package socket
import (
"net"
"os"
)
func (c *Conn ) recvMsg (m *Message , flags int ) error {
m .raceWrite ()
var (
operr error
n int
oobn int
recvflags int
from net .Addr
)
fn := func (s uintptr ) bool {
n , oobn , recvflags , from , operr = recvmsg (s , m .Buffers , m .OOB , flags , c .network )
return ioComplete (flags , operr )
}
if err := c .c .Read (fn ); err != nil {
return err
}
if operr != nil {
return os .NewSyscallError ("recvmsg" , operr )
}
m .Addr = from
m .N = n
m .NN = oobn
m .Flags = recvflags
return nil
}
func (c *Conn ) sendMsg (m *Message , flags int ) error {
m .raceRead ()
var (
operr error
n int
)
fn := func (s uintptr ) bool {
n , operr = sendmsg (s , m .Buffers , m .OOB , m .Addr , flags )
return ioComplete (flags , operr )
}
if err := c .c .Write (fn ); err != nil {
return err
}
if operr != nil {
return os .NewSyscallError ("sendmsg" , operr )
}
m .N = n
m .NN = len (m .OOB )
return nil
}
The pages are generated with Golds v0.8.2 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .