tq: teach *TransferQueue to hold a progress.CopyCallback

This commit is contained in:
Taylor Blau 2017-08-01 12:58:18 -06:00
parent 211e886290
commit e031ee6c79

@ -95,6 +95,7 @@ type TransferQueue struct {
adapterInProgress bool adapterInProgress bool
adapterInitMutex sync.Mutex adapterInitMutex sync.Mutex
dryRun bool dryRun bool
cb progress.CopyCallback
meter progress.Meter meter progress.Meter
errors []error errors []error
transfers map[string]*objectTuple transfers map[string]*objectTuple
@ -134,6 +135,12 @@ func WithProgress(m progress.Meter) Option {
} }
} }
func WithProgressCallback(cb progress.CopyCallback) Option {
return func(tq *TransferQueue) {
tq.cb = cb
}
}
func WithBatchSize(size int) Option { func WithBatchSize(size int) Option {
return func(tq *TransferQueue) { tq.batchSize = size } return func(tq *TransferQueue) { tq.batchSize = size }
} }
@ -575,6 +582,9 @@ func (q *TransferQueue) ensureAdapterBegun(e lfsapi.Endpoint) error {
// Progress callback - receives byte updates // Progress callback - receives byte updates
cb := func(name string, total, read int64, current int) error { cb := func(name string, total, read int64, current int) error {
q.meter.TransferBytes(q.direction.String(), name, read, total, current) q.meter.TransferBytes(q.direction.String(), name, read, total, current)
if q.cb != nil {
q.cb(total, read, current)
}
return nil return nil
} }