github.com/catandhorse/git-lfs@v2.5.2+incompatible/tasklog/task.go (about) 1 package tasklog 2 3 import "time" 4 5 // Task is an interface which encapsulates an activity which can be logged. 6 type Task interface { 7 // Updates returns a channel which is written to with the current state 8 // of the Task when an update is present. It is closed when the task is 9 // complete. 10 Updates() <-chan *Update 11 12 // Throttled returns whether or not updates from this task should be 13 // limited when being printed to a sink via *log.Logger. 14 // 15 // It is expected to return the same value for a given Task instance. 16 Throttled() bool 17 } 18 19 // Update is a single message sent (S) from a Task at a given time (At). 20 type Update struct { 21 // S is the message sent in this update. 22 S string 23 // At is the time that this update was sent. 24 At time.Time 25 26 // Force determines if this update should not be throttled. 27 Force bool 28 } 29 30 // Throttled determines whether this update should be throttled, based on the 31 // given earliest time of the next update. The caller should determine how often 32 // updates should be throttled. An Update with Force=true is never throttled. 33 func (u *Update) Throttled(next time.Time) bool { 34 return !(u.Force || u.At.After(next)) 35 }