github.com/TeaOSLab/EdgeNode@v1.3.8/internal/caches/reader.go (about) 1 package caches 2 3 import "github.com/TeaOSLab/EdgeNode/internal/utils/ranges" 4 5 type ReaderFunc func(n int) (goNext bool, err error) 6 7 type Reader interface { 8 // Init 初始化 9 Init() error 10 11 // TypeName 类型名称 12 TypeName() string 13 14 // ExpiresAt 过期时间 15 ExpiresAt() int64 16 17 // Status 状态码 18 Status() int 19 20 // LastModified 最后修改时间 21 LastModified() int64 22 23 // ReadHeader 读取Header 24 ReadHeader(buf []byte, callback ReaderFunc) error 25 26 // ReadBody 读取Body 27 ReadBody(buf []byte, callback ReaderFunc) error 28 29 // Read 实现io.Reader接口 30 Read(buf []byte) (int, error) 31 32 // ReadBodyRange 读取某个范围内的Body 33 ReadBodyRange(buf []byte, start int64, end int64, callback ReaderFunc) error 34 35 // HeaderSize Header Size 36 HeaderSize() int64 37 38 // BodySize Body Size 39 BodySize() int64 40 41 // ContainsRange 是否包含某个区间内容 42 ContainsRange(r rangeutils.Range) (r2 rangeutils.Range, ok bool) 43 44 // Close 关闭 45 Close() error 46 }