Abort downloader on shutdown, don't wait for downloads to finish. #45 #114

This commit is contained in:
Andrey Smirnov
2014-10-03 01:31:38 +04:00
parent 43eb993160
commit 1042894123
4 changed files with 16 additions and 3 deletions
+2
View File
@@ -90,6 +90,8 @@ type Downloader interface {
// Shutdown stops downloader after current tasks are finished,
// but doesn't process rest of queue
Shutdown()
// Abort stops downloader without waiting for shutdown
Abort()
// GetProgress returns Progress object
GetProgress() Progress
}
+1 -1
View File
@@ -289,7 +289,7 @@ func ShutdownContext() {
context.database = nil
}
if context.downloader != nil {
context.downloader.Shutdown()
context.downloader.Abort()
context.downloader = nil
}
if context.progress != nil {
+9 -2
View File
@@ -52,8 +52,8 @@ func NewDownloader(threads int, downLimit int64, progress aptly.Progress) aptly.
downloader := &downloaderImpl{
queue: make(chan *downloadTask, 1000),
stop: make(chan struct{}),
stopped: make(chan struct{}),
stop: make(chan struct{}, threads),
stopped: make(chan struct{}, threads),
pause: make(chan struct{}),
unpause: make(chan struct{}),
threads: threads,
@@ -88,6 +88,13 @@ func (downloader *downloaderImpl) Shutdown() {
}
}
// Abort stops downloader but doesn't wait for downloader to stop
func (downloader *downloaderImpl) Abort() {
for i := 0; i < downloader.threads; i++ {
downloader.stop <- struct{}{}
}
}
// Pause pauses task processing
func (downloader *downloaderImpl) Pause() {
for i := 0; i < downloader.threads; i++ {
+4
View File
@@ -123,6 +123,10 @@ func (f *FakeDownloader) Download(url string, filename string, result chan<- err
func (f *FakeDownloader) Shutdown() {
}
// Abort does nothing
func (f *FakeDownloader) Abort() {
}
// Pause does nothing
func (f *FakeDownloader) Pause() {
}