Documentation
¶
Index ¶
- func CacheFullAndHash(stream model.FileStreamer, up *model.UpdateProgress, hashType *utils.HashType, ...) (model.File, string, error)
- func GetRangeReaderFromLink(size int64, link *model.Link) (model.RangeReaderIF, error)
- func GetRangeReaderFromMFile(size int64, file model.File) *model.FileRangeReader
- func NewMultiReaderAt(ss []*SeekableStream) (readerutil.SizeReaderAt, error)
- func NewReadAtSeeker(ss *SeekableStream, offset int64, forceRange ...bool) (model.File, error)
- type FileStream
- func (f *FileStream) CacheFullAndWriter(up *model.UpdateProgress, writer io.Writer) (model.File, error)
- func (f *FileStream) Close() error
- func (f *FileStream) GetExist() model.Obj
- func (f *FileStream) GetFile() model.File
- func (f *FileStream) GetMimetype() string
- func (f *FileStream) GetSize() int64
- func (f *FileStream) IsForceStreamUpload() bool
- func (f *FileStream) NeedStore() bool
- func (f *FileStream) RangeRead(httpRange http_range.Range) (io.Reader, error)
- func (f *FileStream) SetExist(obj model.Obj)
- type Limiter
- type RangeReadReadAtSeeker
- type RangeReaderFunc
- type RateLimitFile
- type RateLimitRangeReaderFunc
- type RateLimitReader
- type RateLimitWriter
- type ReaderUpdatingProgress
- type ReaderWithCtx
- type ReaderWithSize
- type SeekableStream
- type SimpleReaderWithSize
- type StreamSectionReaderIF
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CacheFullAndHash ¶ added in v4.1.1
func GetRangeReaderFromLink ¶ added in v4.0.9
func GetRangeReaderFromMFile ¶ added in v4.0.9
func GetRangeReaderFromMFile(size int64, file model.File) *model.FileRangeReader
func NewMultiReaderAt ¶
func NewMultiReaderAt(ss []*SeekableStream) (readerutil.SizeReaderAt, error)
func NewReadAtSeeker ¶
Types ¶
type FileStream ¶
type FileStream struct {
Ctx context.Context
model.Obj
io.Reader
Mimetype string
WebPutAsTask bool
ForceStreamUpload bool
Exist model.Obj //the file existed in the destination, we can reuse some info since we wil overwrite it
utils.Closers
// contains filtered or unexported fields
}
func (*FileStream) CacheFullAndWriter ¶ added in v4.1.1
func (f *FileStream) CacheFullAndWriter(up *model.UpdateProgress, writer io.Writer) (model.File, error)
CacheFullAndWriter save all data into tmpFile or memory. It's not thread-safe!
func (*FileStream) Close ¶
func (f *FileStream) Close() error
func (*FileStream) GetExist ¶
func (f *FileStream) GetExist() model.Obj
func (*FileStream) GetFile ¶
func (f *FileStream) GetFile() model.File
func (*FileStream) GetMimetype ¶
func (f *FileStream) GetMimetype() string
func (*FileStream) GetSize ¶
func (f *FileStream) GetSize() int64
func (*FileStream) IsForceStreamUpload ¶
func (f *FileStream) IsForceStreamUpload() bool
func (*FileStream) NeedStore ¶
func (f *FileStream) NeedStore() bool
func (*FileStream) RangeRead ¶
func (f *FileStream) RangeRead(httpRange http_range.Range) (io.Reader, error)
从流读取指定范围的一块数据,并且不消耗流。 当读取的边界超过内部设置大小后会缓存整个流。 流未缓存时线程不完全
func (*FileStream) SetExist ¶
func (f *FileStream) SetExist(obj model.Obj)
type Limiter ¶
type Limiter interface {
Limit() rate.Limit
Burst() int
TokensAt(time.Time) float64
Tokens() float64
Allow() bool
AllowN(time.Time, int) bool
Reserve() *rate.Reservation
ReserveN(time.Time, int) *rate.Reservation
Wait(context.Context) error
WaitN(context.Context, int) error
SetLimit(rate.Limit)
SetLimitAt(time.Time, rate.Limit)
SetBurst(int)
SetBurstAt(time.Time, int)
}
type RangeReadReadAtSeeker ¶
type RangeReadReadAtSeeker struct {
// contains filtered or unexported fields
}
func (*RangeReadReadAtSeeker) InitHeadCache ¶
func (r *RangeReadReadAtSeeker) InitHeadCache()
func (*RangeReadReadAtSeeker) Read ¶
func (r *RangeReadReadAtSeeker) Read(p []byte) (n int, err error)
type RangeReaderFunc ¶ added in v4.0.9
type RangeReaderFunc func(ctx context.Context, httpRange http_range.Range) (io.ReadCloser, error)
func (RangeReaderFunc) RangeRead ¶ added in v4.0.9
func (f RangeReaderFunc) RangeRead(ctx context.Context, httpRange http_range.Range) (io.ReadCloser, error)
type RateLimitFile ¶
func (*RateLimitFile) Close ¶ added in v4.0.8
func (r *RateLimitFile) Close() error
type RateLimitRangeReaderFunc ¶ added in v4.0.9
type RateLimitRangeReaderFunc RangeReaderFunc
func (RateLimitRangeReaderFunc) RangeRead ¶ added in v4.0.9
func (f RateLimitRangeReaderFunc) RangeRead(ctx context.Context, httpRange http_range.Range) (io.ReadCloser, error)
type RateLimitReader ¶
func (*RateLimitReader) Close ¶
func (r *RateLimitReader) Close() error
type RateLimitWriter ¶
func (*RateLimitWriter) Close ¶
func (w *RateLimitWriter) Close() error
type ReaderUpdatingProgress ¶
type ReaderUpdatingProgress struct {
Reader ReaderWithSize
model.UpdateProgress
// contains filtered or unexported fields
}
func (*ReaderUpdatingProgress) Close ¶
func (r *ReaderUpdatingProgress) Close() error
type ReaderWithCtx ¶
func (*ReaderWithCtx) Close ¶
func (r *ReaderWithCtx) Close() error
type ReaderWithSize ¶
type SeekableStream ¶
type SeekableStream struct {
*FileStream
// contains filtered or unexported fields
}
func NewSeekableStream ¶
func NewSeekableStream(fs *FileStream, link *model.Link) (*SeekableStream, error)
NewSeekableStream create a SeekableStream from FileStream and Link if FileStream.Reader is not nil, use it directly else create RangeReader from Link
func (*SeekableStream) CacheFullAndWriter ¶ added in v4.1.1
func (ss *SeekableStream) CacheFullAndWriter(up *model.UpdateProgress, writer io.Writer) (model.File, error)
func (*SeekableStream) RangeRead ¶
func (ss *SeekableStream) RangeRead(httpRange http_range.Range) (io.Reader, error)
如果使用缓存或者rangeReader读取指定范围的数据,是线程安全的 其他特性继承自FileStream.RangeRead
type SimpleReaderWithSize ¶
func (*SimpleReaderWithSize) Close ¶
func (r *SimpleReaderWithSize) Close() error
func (*SimpleReaderWithSize) GetSize ¶
func (r *SimpleReaderWithSize) GetSize() int64
type StreamSectionReaderIF ¶ added in v4.1.4
type StreamSectionReaderIF interface {
// 线程不安全
GetSectionReader(off, length int64) (io.ReadSeeker, error)
FreeSectionReader(sr io.ReadSeeker)
// 线程不安全
DiscardSection(off int64, length int64) error
}
func NewStreamSectionReader ¶ added in v4.1.1
func NewStreamSectionReader(file model.FileStreamer, maxBufferSize int, up *model.UpdateProgress) (StreamSectionReaderIF, error)
Click to show internal directories.
Click to hide internal directories.