mirror of
https://github.com/Xpl0itU/WiiUDownloader.git
synced 2025-05-17 08:35:07 -04:00
Improve cancellation
This commit is contained in:
parent
624c96b7e8
commit
f927c43c1b
3 changed files with 15 additions and 9 deletions
19
utils.go
19
utils.go
|
@ -32,22 +32,27 @@ func doDeleteEncryptedContents(path string) error {
|
|||
}
|
||||
|
||||
type BufferedWriter struct {
|
||||
file *os.File
|
||||
downloaded *int64
|
||||
buffer []byte
|
||||
file *os.File
|
||||
downloaded *int64
|
||||
progressReporter ProgressReporter
|
||||
buffer []byte
|
||||
}
|
||||
|
||||
func NewFileWriterWithProgress(file *os.File, downloaded *int64) (*BufferedWriter, error) {
|
||||
func NewFileWriterWithProgress(file *os.File, downloaded *int64, progressReporter ProgressReporter) (*BufferedWriter, error) {
|
||||
return &BufferedWriter{
|
||||
file: file,
|
||||
downloaded: downloaded,
|
||||
buffer: make([]byte, bufferSize),
|
||||
file: file,
|
||||
downloaded: downloaded,
|
||||
progressReporter: progressReporter,
|
||||
buffer: make([]byte, bufferSize),
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (bw *BufferedWriter) Write(data []byte) (int, error) {
|
||||
written := 0
|
||||
for written < len(data) {
|
||||
if bw.progressReporter.Cancelled() {
|
||||
return written, nil
|
||||
}
|
||||
remaining := len(data) - written
|
||||
toWrite := min(bufferSize, uint64(remaining))
|
||||
copy(bw.buffer, data[written:written+int(toWrite)])
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue