diff options
Diffstat (limited to 'weed/storage/backend/rclone_backend/rclone_progress.go')
| -rw-r--r-- | weed/storage/backend/rclone_backend/rclone_progress.go | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/weed/storage/backend/rclone_backend/rclone_progress.go b/weed/storage/backend/rclone_backend/rclone_progress.go new file mode 100644 index 000000000..cf359ca40 --- /dev/null +++ b/weed/storage/backend/rclone_backend/rclone_progress.go @@ -0,0 +1,19 @@ +package rclone_backend + +import "github.com/rclone/rclone/fs/accounting" + +type ProgressReader struct { + acc *accounting.Account + tr *accounting.Transfer + fn func(progressed int64, percentage float32) error +} + +func (pr *ProgressReader) Read(p []byte) (n int, err error) { + n, err = pr.acc.Read(p) + if err != nil { + return + } + snap := pr.tr.Snapshot() + err = pr.fn(snap.Bytes, 100*float32(snap.Bytes)/float32(snap.Size)) + return +} |
