stream

package
v3.42.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 27, 2025 License: AGPL-3.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const InMemoryBufMaxSize = 10 // Megabytes
View Source
const InMemoryBufMaxSizeBytes = InMemoryBufMaxSize * 1024 * 1024

Variables

This section is empty.

Functions

func GetRangeReadCloserFromLink(size int64, link *model.Link) (model.RangeReadCloserIF, error)

func RequestRangedHttp

func RequestRangedHttp(ctx context.Context, link *model.Link, offset, length int64) (*http.Response, 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)

func (*FileReadAtSeeker) ReadAt added in v3.42.0

func (f *FileReadAtSeeker) ReadAt(p []byte, off int64) (n int, err error)

func (*FileReadAtSeeker) Seek added in v3.42.0

func (f *FileReadAtSeeker) Seek(offset int64, whence int) (int64, 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 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)

func (*RangeReadReadAtSeeker) ReadAt added in v3.42.0

func (r *RangeReadReadAtSeeker) ReadAt(p []byte, off int64) (int, error)

func (*RangeReadReadAtSeeker) Seek added in v3.42.0

func (r *RangeReadReadAtSeeker) Seek(offset int64, whence int) (int64, error)

type ReaderUpdatingProgress added in v3.42.0

type ReaderUpdatingProgress struct {
	Reader ReaderWithSize
	model.UpdateProgress
	// contains filtered or unexported fields
}

func (*ReaderUpdatingProgress) Read added in v3.42.0

func (r *ReaderUpdatingProgress) Read(p []byte) (n int, err error)

type ReaderWithSize added in v3.42.0

type ReaderWithSize interface {
	io.Reader
	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.

func (*SeekableStream) Read

func (ss *SeekableStream) Read(p []byte) (n int, err error)

only provide Reader as full stream when it's demanded. in rapid-upload, we can skip this to save memory

type SimpleReaderWithSize added in v3.42.0

type SimpleReaderWithSize struct {
	io.Reader
	Size int64
}

func (*SimpleReaderWithSize) GetSize added in v3.42.0

func (r *SimpleReaderWithSize) GetSize() int64

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL