// Copyright 2011 The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.//go:build linux || (darwin && !ios) || dragonfly || freebsd || solaris || windowspackage netimport ()// sendFile copies the contents of r to c using the sendfile// system call to minimize copies.//// if handled == true, sendFile returns the number (potentially zero) of bytes// copied and any non-EOF error.//// if handled == false, sendFile performed no work.func sendFile( *netFD, io.Reader) ( int64, error, bool) {if !supportsSendfile() {return0, nil, false }varint64 = 0// 0 writes the entire file , := .(*io.LimitedReader)if { , = .N, .Rif <= 0 {return0, nil, true } }// r might be an *os.File or an os.fileWithoutWriteTo. // Type assert to an interface rather than *os.File directly to handle the latter case. , := .(syscall.Conn)if ! {return0, nil, false } , := .SyscallConn()if != nil {return0, nil, false }varerror = .Read(func( uintptr) bool { , , = poll.SendFile(&.pfd, , )returntrue })if == nil { = }if != nil { .N = - }return , wrapSyscallError("sendfile", ), }
The pages are generated with Goldsv0.7.7-preview. (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.