Source file
src/net/sendfile_windows.go
1
2
3
4
5 package net
6
7 import (
8 "internal/poll"
9 "io"
10 "os"
11 "syscall"
12 )
13
14 const supportsSendfile = true
15
16
17
18
19
20
21
22
23 func sendFile(fd *netFD, r io.Reader) (written int64, err error, handled bool) {
24 var n int64 = 0
25
26 lr, ok := r.(*io.LimitedReader)
27 if ok {
28 n, r = lr.N, lr.R
29 if n <= 0 {
30 return 0, nil, true
31 }
32 }
33
34 f, ok := r.(*os.File)
35 if !ok {
36 return 0, nil, false
37 }
38
39 written, err = poll.SendFile(&fd.pfd, syscall.Handle(f.Fd()), n)
40 if err != nil {
41 err = wrapSyscallError("transmitfile", err)
42 }
43
44
45
46 handled = written > 0
47
48 return
49 }
50
View as plain text