MCPcopy
hub / github.com/cloudflare/cloudflared / copyData

Function copyData

stream/stream.go:143–185  ·  view source on GitHub ↗
(dst io.Writer, src io.Reader, dir string)

Source from the content-addressed store, hash-verified

141const debugCopy = false
142
143func copyData(dst io.Writer, src io.Reader, dir string) (written int64, err error) {
144 if debugCopy {
145 // copyBuffer is based on stdio Copy implementation but shows copied data
146 copyBuffer := func(dst io.Writer, src io.Reader, dir string) (written int64, err error) {
147 var buf []byte
148 size := 32 * 1024
149 buf = make([]byte, size)
150 for {
151 t := time.Now()
152 nr, er := src.Read(buf)
153 if nr > 0 {
154 fmt.Println(dir, t.UnixNano(), "\n"+hex.Dump(buf[0:nr]))
155 nw, ew := dst.Write(buf[0:nr])
156 if nw < 0 || nr < nw {
157 nw = 0
158 if ew == nil {
159 ew = errors.New("invalid write")
160 }
161 }
162 written += int64(nw)
163 if ew != nil {
164 err = ew
165 break
166 }
167 if nr != nw {
168 err = io.ErrShortWrite
169 break
170 }
171 }
172 if er != nil {
173 if er != io.EOF {
174 err = er
175 }
176 break
177 }
178 }
179 return written, err
180 }
181 return copyBuffer(dst, src, dir)
182 } else {
183 return cfio.Copy(dst, src)
184 }
185}

Callers 1

unidirectionalStreamFunction · 0.85

Calls 3

CopyFunction · 0.92
WriteMethod · 0.65
ReadMethod · 0.45

Tested by

no test coverage detected