Switch to fasthttp

This commit is contained in:
Xpl0itU 2024-04-03 17:02:12 +02:00
parent e970472fcb
commit 461d6f4a84
7 changed files with 121 additions and 75 deletions

View file

@ -30,3 +30,33 @@ func doDeleteEncryptedContents(path string) error {
return nil
})
}
type BufferedWriter struct {
file *os.File
downloaded *int64
buffer []byte
}
func NewFileWriterWithProgress(file *os.File, downloaded *int64) (*BufferedWriter, error) {
return &BufferedWriter{
file: file,
downloaded: downloaded,
buffer: make([]byte, bufferSize),
}, nil
}
func (bw *BufferedWriter) Write(data []byte) (int, error) {
written := 0
for written < len(data) {
remaining := len(data) - written
toWrite := min(bufferSize, uint64(remaining))
copy(bw.buffer, data[written:written+int(toWrite)])
n, err := bw.file.Write(bw.buffer[:toWrite])
if err != nil {
return written, err
}
written += n
*bw.downloaded += int64(n)
}
return written, nil
}