Files
EdgeNode/internal/caches/reader.go

53 lines
1.0 KiB
Go
Raw Normal View History

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