File tree Expand file tree Collapse file tree 1 file changed +26
-2
lines changed Expand file tree Collapse file tree 1 file changed +26
-2
lines changed Original file line number Diff line number Diff line change 17
17
package ipfs
18
18
19
19
import (
20
+ "bufio"
20
21
"context"
21
22
"encoding/json"
22
23
"fmt"
@@ -152,7 +153,7 @@ func (s *server) getReadSeekCloser(c cid.Cid) (io.ReadSeekCloser, error) {
152
153
if err != nil {
153
154
return nil , err
154
155
}
155
- return & readSeekCloser { r , closeFunc } , nil
156
+ return newReadSeekCloser ( r , closeFunc ) , nil
156
157
}
157
158
158
159
func (s * server ) getFile (c cid.Cid ) (* io.SectionReader , func () error , error ) {
@@ -243,9 +244,32 @@ func getMediaType(desc ocispec.Descriptor) string {
243
244
return "application/octet-stream"
244
245
}
245
246
247
+ func newReadSeekCloser (rs io.ReadSeeker , closeFunc func () error ) io.ReadSeekCloser {
248
+ rsc := & readSeekCloser {
249
+ rs : rs ,
250
+ closeFunc : closeFunc ,
251
+ }
252
+ rsc .curR = bufio .NewReaderSize (rsc .rs , 512 * 1024 )
253
+ return rsc
254
+ }
255
+
246
256
type readSeekCloser struct {
247
- io.ReadSeeker
257
+ rs io.ReadSeeker
248
258
closeFunc func () error
259
+ curR * bufio.Reader
260
+ }
261
+
262
+ func (r * readSeekCloser ) Read (p []byte ) (int , error ) {
263
+ return r .curR .Read (p )
264
+ }
265
+
266
+ func (r * readSeekCloser ) Seek (offset int64 , whence int ) (int64 , error ) {
267
+ n , err := r .rs .Seek (offset , whence )
268
+ if err != nil {
269
+ return 0 , err
270
+ }
271
+ r .curR .Reset (r .rs )
272
+ return n , nil
249
273
}
250
274
251
275
func (r * readSeekCloser ) Close () error { return r .closeFunc () }
You can’t perform that action at this time.
0 commit comments