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  }