// 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.package netimport ()// sendFile copies the contents of r to c using the sendfile// system call to minimize copies.//// if handled == true, sendFile returns the number of bytes copied and any// non-EOF error.//// if handled == false, sendFile performed no work.func ( *netFD, io.Reader) ( int64, error, bool) {varint64 = 1 << 62// by default, copy until EOF , := .(*io.LimitedReader)if { , = .N, .Rif <= 0 {return0, nil, true } } , := .(*os.File)if ! {return0, nil, false } , := .SyscallConn()if != nil {return0, nil, false }varerror = .Read(func( uintptr) bool { , = poll.SendFile(&.pfd, int(), )returntrue })if == nil { = }if != nil { .N = - }return , wrapSyscallError("sendfile", ), > 0}