Documentation
¶
Index ¶
- Constants
- func CacheFullInTempFileAndHash(stream model.FileStreamer, hashType *utils.HashType, params ...any) (model.File, string, error)
- func CacheFullInTempFileAndUpdateProgress(stream model.FileStreamer, up model.UpdateProgress) (model.File, error)
- func CacheFullInTempFileAndWriter(stream model.FileStreamer, w io.Writer) (model.File, error)
- func GetRangeReadCloserFromLink(size int64, link *model.Link) (model.RangeReadCloserIF, error)
- func NewMultiReaderAt(ss []*SeekableStream) (readerutil.SizeReaderAt, error)
- func RequestRangedHttp(ctx context.Context, link *model.Link, offset, length int64) (*http.Response, error)
- type FileReadAtSeeker
- func (f *FileReadAtSeeker) Close() error
- func (f *FileReadAtSeeker) GetRawStream() *SeekableStream
- func (f *FileReadAtSeeker) Read(p []byte) (n int, err error)
- func (f *FileReadAtSeeker) ReadAt(p []byte, off int64) (n int, err error)
- func (f *FileReadAtSeeker) Seek(offset int64, whence int) (int64, error)
- type FileStream
- func (f *FileStream) CacheFullInTempFile() (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)
- func (f *FileStream) SetTmpFile(r *os.File)
- type Limiter
- type RangeReadReadAtSeeker
- func (r *RangeReadReadAtSeeker) Close() error
- func (r *RangeReadReadAtSeeker) GetRawStream() *SeekableStream
- func (r *RangeReadReadAtSeeker) InitHeadCache()
- func (r *RangeReadReadAtSeeker) Read(p []byte) (n int, err error)
- func (r *RangeReadReadAtSeeker) ReadAt(p []byte, off int64) (int, error)
- func (r *RangeReadReadAtSeeker) Seek(offset int64, whence int) (int64, error)
- type RateLimitFile
- type RateLimitRangeReadCloser
- type RateLimitReader
- type RateLimitWriter
- type ReaderUpdatingProgress
- type ReaderWithCtx
- type ReaderWithSize
- type SStreamReadAtSeeker
- type SeekableStream
- type SimpleReaderWithSize
Constants ¶
const InMemoryBufMaxSize = 10 // Megabytes
const InMemoryBufMaxSizeBytes = InMemoryBufMaxSize * 1024 * 1024
Variables ¶
This section is empty.
Functions ¶
func CacheFullInTempFileAndHash ¶ added in v3.45.0
func CacheFullInTempFileAndUpdateProgress ¶ added in v3.45.0
func CacheFullInTempFileAndUpdateProgress(stream model.FileStreamer, up model.UpdateProgress) (model.File, error)
func CacheFullInTempFileAndWriter ¶ added in v3.45.0
func NewMultiReaderAt ¶ added in v3.44.0
func NewMultiReaderAt(ss []*SeekableStream) (readerutil.SizeReaderAt, error)
Types ¶
type FileReadAtSeeker ¶ added in v3.42.0
type FileReadAtSeeker struct {
// contains filtered or unexported fields
}
func (*FileReadAtSeeker) Close ¶ added in v3.42.0
func (f *FileReadAtSeeker) Close() error
func (*FileReadAtSeeker) GetRawStream ¶ added in v3.42.0
func (f *FileReadAtSeeker) GetRawStream() *SeekableStream
func (*FileReadAtSeeker) Read ¶ added in v3.42.0
func (f *FileReadAtSeeker) Read(p []byte) (n int, err error)
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) CacheFullInTempFile ¶
func (f *FileStream) CacheFullInTempFile() (model.File, error)
CacheFullInTempFile save all data into tmpFile. Not recommended since it wears disk, and can't start upload until the file is written. 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 ¶ added in v3.45.0
func (f *FileStream) GetFile() model.File
func (*FileStream) GetMimetype ¶
func (f *FileStream) GetMimetype() string
func (*FileStream) GetSize ¶ added in v3.28.0
func (f *FileStream) GetSize() int64
func (*FileStream) IsForceStreamUpload ¶ added in v3.34.0
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)
RangeRead have to cache all data first since only Reader is provided. also support a peeking RangeRead at very start, but won't buffer more than 10MB data in memory
func (*FileStream) SetExist ¶
func (f *FileStream) SetExist(obj model.Obj)
func (*FileStream) SetTmpFile ¶
func (f *FileStream) SetTmpFile(r *os.File)
type Limiter ¶ added in v3.43.0
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 ¶ added in v3.42.0
type RangeReadReadAtSeeker struct {
// contains filtered or unexported fields
}
func (*RangeReadReadAtSeeker) Close ¶ added in v3.42.0
func (r *RangeReadReadAtSeeker) Close() error
func (*RangeReadReadAtSeeker) GetRawStream ¶ added in v3.42.0
func (r *RangeReadReadAtSeeker) GetRawStream() *SeekableStream
func (*RangeReadReadAtSeeker) InitHeadCache ¶ added in v3.42.0
func (r *RangeReadReadAtSeeker) InitHeadCache()
func (*RangeReadReadAtSeeker) Read ¶ added in v3.42.0
func (r *RangeReadReadAtSeeker) Read(p []byte) (n int, err error)
type RateLimitFile ¶ added in v3.43.0
type RateLimitRangeReadCloser ¶ added in v3.43.0
type RateLimitRangeReadCloser struct {
model.RangeReadCloserIF
Limiter Limiter
}
func (*RateLimitRangeReadCloser) RangeRead ¶ added in v3.43.0
func (rrc *RateLimitRangeReadCloser) RangeRead(ctx context.Context, httpRange http_range.Range) (io.ReadCloser, error)
type RateLimitReader ¶ added in v3.43.0
func (*RateLimitReader) Close ¶ added in v3.43.0
func (r *RateLimitReader) Close() error
type RateLimitWriter ¶ added in v3.43.0
func (*RateLimitWriter) Close ¶ added in v3.43.0
func (w *RateLimitWriter) Close() error
type ReaderUpdatingProgress ¶ added in v3.42.0
type ReaderUpdatingProgress struct {
Reader ReaderWithSize
model.UpdateProgress
// contains filtered or unexported fields
}
func (*ReaderUpdatingProgress) Close ¶ added in v3.43.0
func (r *ReaderUpdatingProgress) Close() error
type ReaderWithCtx ¶ added in v3.43.0
func (*ReaderWithCtx) Close ¶ added in v3.43.0
func (r *ReaderWithCtx) Close() error
type ReaderWithSize ¶ added in v3.42.0
type ReaderWithSize interface {
io.ReadCloser
GetSize() int64
}
type SStreamReadAtSeeker ¶ added in v3.42.0
type SStreamReadAtSeeker interface {
model.File
GetRawStream() *SeekableStream
}
func NewReadAtSeeker ¶ added in v3.42.0
func NewReadAtSeeker(ss *SeekableStream, offset int64, forceRange ...bool) (SStreamReadAtSeeker, error)
type SeekableStream ¶
type SeekableStream struct {
FileStream
Link *model.Link
// contains filtered or unexported fields
}
for most internal stream, which is either RangeReadCloser or MFile Any functionality implemented based on SeekableStream should implement a Close method, whose only purpose is to close the SeekableStream object. If such functionality has additional resources that need to be closed, they should be added to the Closer property of the SeekableStream object and be closed together when the SeekableStream object is closed.
func NewSeekableStream ¶
func NewSeekableStream(fs FileStream, link *model.Link) (*SeekableStream, error)
func (*SeekableStream) CacheFullInTempFile ¶
func (ss *SeekableStream) CacheFullInTempFile() (model.File, error)
func (*SeekableStream) GetFile ¶ added in v3.45.0
func (ss *SeekableStream) GetFile() model.File
func (*SeekableStream) RangeRead ¶
func (ss *SeekableStream) RangeRead(httpRange http_range.Range) (io.Reader, error)
RangeRead is not thread-safe, pls use it in single thread only.
type SimpleReaderWithSize ¶ added in v3.42.0
func (*SimpleReaderWithSize) Close ¶ added in v3.43.0
func (r *SimpleReaderWithSize) Close() error
func (*SimpleReaderWithSize) GetSize ¶ added in v3.42.0
func (r *SimpleReaderWithSize) GetSize() int64