package socket
import (
"net"
)
func (c *Conn ) recvMsgs (ms []Message , flags int ) (int , error ) {
for i := range ms {
ms [i ].raceWrite ()
}
tmps := defaultMmsgTmpsPool .Get ()
defer defaultMmsgTmpsPool .Put (tmps )
var parseFn func ([]byte , string ) (net .Addr , error )
if c .network != "tcp" {
parseFn = parseInetAddr
}
hs := tmps .packer .pack (ms , parseFn , nil )
n , err := tmps .syscaller .recvmmsg (c .c , hs , flags )
if err != nil {
return n , err
}
if err := hs [:n ].unpack (ms [:n ], parseFn , c .network ); err != nil {
return n , err
}
return n , nil
}
func (c *Conn ) sendMsgs (ms []Message , flags int ) (int , error ) {
for i := range ms {
ms [i ].raceRead ()
}
tmps := defaultMmsgTmpsPool .Get ()
defer defaultMmsgTmpsPool .Put (tmps )
var marshalFn func (net .Addr , []byte ) int
if c .network != "tcp" {
marshalFn = marshalInetAddr
}
hs := tmps .packer .pack (ms , nil , marshalFn )
n , err := tmps .syscaller .sendmmsg (c .c , hs , flags )
if err != nil {
return n , err
}
if err := hs [:n ].unpack (ms [:n ], nil , "" ); err != nil {
return n , err
}
return n , 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 .