Files
EdgeNode/internal/caches/reader.go
GoEdgeLab c19be78e0d v1.4.1
2024-07-27 15:42:50 +08:00

54 lines
1.0 KiB
Go

package caches
import (
"io"
"github.com/TeaOSLab/EdgeNode/internal/utils/ranges"
)
type ReaderFunc func(n int) (goNext bool, err error)
type Reader interface {
// Init 初始化
Init() error
// TypeName 类型名称
TypeName() string
// ExpiresAt 过期时间
ExpiresAt() int64
// Status 状态码
Status() int
// LastModified 最后修改时间
LastModified() int64
// ReadHeader 读取Header
ReadHeader(buf []byte, callback ReaderFunc) error
// ReadBody 读取Body
ReadBody(buf []byte, callback ReaderFunc) error
// Read 实现io.Reader接口
Read(buf []byte) (int, error)
// ReadBodyRange 读取某个范围内的Body
ReadBodyRange(buf []byte, start int64, end int64, callback ReaderFunc) error
// HeaderSize Header Size
HeaderSize() int64
// BodySize Body Size
BodySize() int64
// ContainsRange 是否包含某个区间内容
ContainsRange(r rangeutils.Range) (r2 rangeutils.Range, ok bool)
// SetNextReader 设置下一个内容Reader
SetNextReader(nextReader io.ReadCloser)
// Close 关闭
Close() error
}