Documentation
¶
Index ¶
- Constants
- func GetRangeReadCloserFromLink(size int64, link *model.Link) (model.RangeReadCloserIF, 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) CacheFullInTempFileAndUpdateProgress(up model.UpdateProgress) (model.File, error)
- func (f *FileStream) Close() error
- func (f *FileStream) GetExist() model.Obj
- 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
- func (ss *SeekableStream) CacheFullInTempFile() (model.File, error)
- func (ss *SeekableStream) CacheFullInTempFileAndUpdateProgress(up model.UpdateProgress) (model.File, error)
- func (ss *SeekableStream) RangeRead(httpRange http_range.Range) (io.Reader, error)
- func (ss *SeekableStream) Read(p []byte) (n int, err error)
- type SimpleReaderWithSize
Constants ¶
View Source
const InMemoryBufMaxSize = 10 // Megabytes
View Source
const InMemoryBufMaxSizeBytes = InMemoryBufMaxSize * 1024 * 1024
Variables ¶
This section is empty.
Functions ¶
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) CacheFullInTempFileAndUpdateProgress ¶ added in v3.42.0
func (f *FileStream) CacheFullInTempFileAndUpdateProgress(up model.UpdateProgress) (model.File, error)
func (*FileStream) Close ¶
func (f *FileStream) Close() error
func (*FileStream) GetExist ¶
func (f *FileStream) GetExist() model.Obj
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
func NewSeekableStream ¶
func NewSeekableStream(fs FileStream, link *model.Link) (*SeekableStream, error)
func (*SeekableStream) CacheFullInTempFile ¶
func (ss *SeekableStream) CacheFullInTempFile() (model.File, error)
func (*SeekableStream) CacheFullInTempFileAndUpdateProgress ¶ added in v3.42.0
func (ss *SeekableStream) CacheFullInTempFileAndUpdateProgress(up model.UpdateProgress) (model.File, error)
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
Click to show internal directories.
Click to hide internal directories.