MCPcopy Create free account
hub / github.com/devld/go-drive / GetReader

Method GetReader

drive/script/index.go:273–295  ·  view source on GitHub ↗

GetReader gets the reader of this entry

(ctx context.Context, start, size int64)

Source from the content-addressed store, hash-verified

271
272// GetReader gets the reader of this entry
273func (se *scriptDriveEntry) GetReader(ctx context.Context, start, size int64) (io.ReadCloser, error) {
274 vm, e := se.d.pool.Get(ctx)
275 if e != nil {
276 return nil, e
277 }
278 defer func() { _ = se.d.pool.Return(context.Background(), vm) }()
279 v, e := se.d.call(ctx, vm, "getReader", s.NewContext(vm, ctx), se.s, start, size)
280 if e != nil {
281 return nil, e
282 }
283 raw := v.Raw()
284 // Detach the reader from the VM so it is not closed when the VM is returned
285 // to the pool below; the caller owns closing the returned ReadCloser.
286 if rc := s.DetachReadCloser(vm, raw); rc != nil {
287 return rc, nil
288 }
289 // Fallback for non-closable (e.g. in-memory) readers.
290 reader := s.GetReader(raw)
291 if reader == nil {
292 panic("invalid returned value from getReader")
293 }
294 return wrapReader(reader), nil
295}
296
297func (se *scriptDriveEntry) GetURL(ctx context.Context) (*types.ContentURL, error) {
298 vm, e := se.d.pool.Get(ctx)

Callers 1

ThumbnailMethod · 0.95

Calls 5

wrapReaderFunction · 0.85
ReturnMethod · 0.80
callMethod · 0.80
RawMethod · 0.80
GetMethod · 0.65

Tested by

no test coverage detected