Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
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.
Click to show internal directories.
Click to hide internal directories.