summaryrefslogtreecommitdiff
path: root/vendor/github.com/vbauerster/mpb/progress_posix.go
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2019-02-21 17:07:48 +0100
committerGitHub <noreply@github.com>2019-02-21 17:07:48 +0100
commitaf922fb2c6baceb89cc8e4acd6d84a6474b32dda (patch)
treeb986c985c9f30f52279c9e265ce67c25b20c0a0d /vendor/github.com/vbauerster/mpb/progress_posix.go
parent28d6eeb57a46b8df8960cff6bf6748c4611b61ef (diff)
parentc069d117594d72159157aa48d0693d8571be45c5 (diff)
downloadpodman-af922fb2c6baceb89cc8e4acd6d84a6474b32dda.tar.gz
podman-af922fb2c6baceb89cc8e4acd6d84a6474b32dda.tar.bz2
podman-af922fb2c6baceb89cc8e4acd6d84a6474b32dda.zip
Merge pull request #2394 from vrothberg/vendor-image-v1.4
vendor containers/image v1.4
Diffstat (limited to 'vendor/github.com/vbauerster/mpb/progress_posix.go')
-rw-r--r--vendor/github.com/vbauerster/mpb/progress_posix.go70
1 files changed, 70 insertions, 0 deletions
diff --git a/vendor/github.com/vbauerster/mpb/progress_posix.go b/vendor/github.com/vbauerster/mpb/progress_posix.go
new file mode 100644
index 000000000..545245a42
--- /dev/null
+++ b/vendor/github.com/vbauerster/mpb/progress_posix.go
@@ -0,0 +1,70 @@
+// +build !windows
+
+package mpb
+
+import (
+ "os"
+ "os/signal"
+ "syscall"
+ "time"
+)
+
+func (p *Progress) serve(s *pState) {
+
+ var ticker *time.Ticker
+ var refreshCh <-chan time.Time
+ var winch chan os.Signal
+ var resumeTimer *time.Timer
+ var resumeEvent <-chan time.Time
+ winchIdleDur := s.rr * 2
+
+ if s.manualRefreshCh == nil {
+ ticker = time.NewTicker(s.rr)
+ refreshCh = ticker.C
+ winch = make(chan os.Signal, 2)
+ signal.Notify(winch, syscall.SIGWINCH)
+ } else {
+ refreshCh = s.manualRefreshCh
+ }
+
+ for {
+ select {
+ case op := <-p.operateState:
+ op(s)
+ case <-refreshCh:
+ if s.zeroWait {
+ if s.manualRefreshCh == nil {
+ signal.Stop(winch)
+ ticker.Stop()
+ }
+ if s.shutdownNotifier != nil {
+ close(s.shutdownNotifier)
+ }
+ close(p.done)
+ return
+ }
+ tw, err := s.cw.GetWidth()
+ if err != nil {
+ tw = s.width
+ }
+ s.render(tw)
+ case <-winch:
+ tw, err := s.cw.GetWidth()
+ if err != nil {
+ tw = s.width
+ }
+ s.render(tw - tw/8)
+ if resumeTimer != nil && resumeTimer.Reset(winchIdleDur) {
+ break
+ }
+ ticker.Stop()
+ resumeTimer = time.NewTimer(winchIdleDur)
+ resumeEvent = resumeTimer.C
+ case <-resumeEvent:
+ ticker = time.NewTicker(s.rr)
+ refreshCh = ticker.C
+ resumeEvent = nil
+ resumeTimer = nil
+ }
+ }
+}