// Copyright 2018 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 ()var pollSplice = poll.Splice// spliceFrom transfers data from r to c using the splice system call to minimize// copies from and to userspace. c must be a TCP connection.// Currently, spliceFrom is only enabled if r is a TCP or a stream-oriented Unix connection.//// If spliceFrom returns handled == false, it has performed no work.func spliceFrom( *netFD, io.Reader) ( int64, error, bool) {varint64 = 1<<63 - 1// by default, copy until EOF , := .(*io.LimitedReader)if { , = .N, .Rif <= 0 {return0, nil, true } }var *netFDswitch v := .(type) {case *TCPConn: = .fdcasetcpConnWithoutWriteTo: = .fdcase *UnixConn:if .fd.net != "unix" {return0, nil, false } = .fddefault:return0, nil, false } , , = pollSplice(&.pfd, &.pfd, )if != nil { .N -= }return , wrapSyscallError("splice", ), }// spliceTo transfers data from c to w using the splice system call to minimize// copies from and to userspace. c must be a TCP connection.// Currently, spliceTo is only enabled if w is a stream-oriented Unix connection.//// If spliceTo returns handled == false, it has performed no work.func spliceTo( io.Writer, *netFD) ( int64, error, bool) { , := .(*UnixConn)if ! || .fd.net != "unix" {return } , , = pollSplice(&.fd.pfd, &.pfd, 1<<63-1)return , wrapSyscallError("splice", ), }
The pages are generated with Goldsv0.7.0-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.