123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package utils
- // ProgressEventType defines transfer progress event type
- type ProgressEventType int
- const (
- // TransferStartedEvent transfer started, set TotalBytes
- TransferStartedEvent ProgressEventType = 1 + iota
- // TransferDataEvent transfer data, set ConsumedBytes anmd TotalBytes
- TransferDataEvent
- // TransferCompletedEvent transfer completed
- TransferCompletedEvent
- // TransferFailedEvent transfer encounters an error
- TransferFailedEvent
- )
- // ProgressEvent defines progress event
- type ProgressEvent struct {
- ConsumedBytes int64
- TotalBytes int64
- RwBytes int64
- EventType ProgressEventType
- }
- // ProgressListener listens progress change
- type ProgressListener interface {
- ProgressChanged(event *ProgressEvent)
- }
- // -------------------- Private --------------------
- func NewProgressEvent(eventType ProgressEventType, consumed, total int64, rwBytes int64) *ProgressEvent {
- return &ProgressEvent{
- ConsumedBytes: consumed,
- TotalBytes: total,
- RwBytes: rwBytes,
- EventType: eventType}
- }
- // publishProgress
- func PublishProgress(listener ProgressListener, event *ProgressEvent) {
- if listener != nil && event != nil {
- listener.ProgressChanged(event)
- }
- }
- func GetProgressListener(obj interface{}) ProgressListener {
- if obj == nil {
- return nil
- }
- listener, ok := obj.(ProgressListener)
- if !ok {
- return nil
- }
- return listener
- }
- type ReaderTracker struct {
- CompletedBytes int64
- }
|