seed

package
v1.0.6 Latest Latest
Warning

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

Go to latest
Published: Sep 20, 2020 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CopyBufferToWriterAt

func CopyBufferToWriterAt(off int64, writerAt io.WriterAt, rd io.Reader) (n int64, err error)

CopyBufferToWriterAt copy data from rd and write to io.WriterAt.

Types

type BaseInfo

type BaseInfo struct {
	// the url of seed file.
	URL string

	// the taskID of seed file.
	TaskID string

	// the header of seed file.
	Header map[string][]string

	// URL may contains some changeful query parameters such as authentication parameters. Dragonfly will
	// filter these parameter via 'filter'. The usage of it is that different URL may generate the same
	// download url.
	Filters []string

	// the full length of seed file.
	FullLength int64

	// Seed will download data from rss which is divided by blocks.
	// And block size is defined by BlockOrder. It should be limited [10, 31].
	BlockOrder uint32

	// expire time duration of seed file.
	ExpireTimeDur time.Duration
}

BaseInfo describes the base info of seed.

type Manager

type Manager interface {
	// Register a seed.
	Register(key string, info BaseInfo) (Seed, error)

	// UnRegister seed by key.
	UnRegister(key string) error

	// RefreshExpireTime refreshes expire time of seed.
	RefreshExpireTime(key string, expireTimeDur time.Duration) error

	// NotifyExpired get the expired chan of seed, it will be notified if seed expired.
	NotifyExpired(key string) (<-chan struct{}, error)

	// Prefetch will add seed to the prefetch list, and then prefetch by the concurrent limit.
	Prefetch(key string, perDownloadSize int64) (<-chan struct{}, error)

	// GetPrefetchResult should be called after notify by prefetch chan.
	GetPrefetchResult(key string) (PreFetchResult, error)

	// SetPrefetchLimit limits the concurrency of prefetching seed.
	// Default is defaultDownloadConcurrency.
	SetConcurrentLimit(limit int) (validLimit int)

	// Get gets the seed by key.
	Get(key string) (Seed, error)

	// List lists the seeds.
	List() ([]Seed, error)

	// Stop stops the SeedManager.
	Stop()
}

Manager is an interface which manages the seeds.

type PreFetchResult

type PreFetchResult struct {
	Success bool
	Err     error
	// if canceled, caller need not to do other.
	Canceled bool
}

PreFetchResult shows the result of prefetch.

type Seed

type Seed interface {
	// Prefetch will start to download seed file to local cache.
	Prefetch(perDownloadSize int64) (<-chan struct{}, error)

	// GetPrefetchResult should be called after notify by prefetch chan.
	GetPrefetchResult() (PreFetchResult, error)

	// Delete will delete the local cache and release the resource.
	Delete() error

	// Download providers the range download, if local cache of seed do not include the range,
	// it will download the range data from rss and reply to request.
	Download(off int64, size int64) (io.ReadCloser, error)

	// stop the internal loop and release execution resource.
	Stop()

	// GetFullSize gets the full size of seed file.
	GetFullSize() int64

	// GetStatus gets the status of seed file.
	GetStatus() string

	// GetURL gets the url of seed file.
	GetURL() string

	// GetHeaders gets the headers of seed file.
	GetHeaders() map[string][]string

	// GetHeaders gets the taskID of seed file.
	GetTaskID() string
}

Seed describes the seed file which represents the resource file defined by taskUrl.

Jump to

Keyboard shortcuts

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