summaryrefslogtreecommitdiff
path: root/vendor/gopkg.in/cheggaaa/pb.v1/pool.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/gopkg.in/cheggaaa/pb.v1/pool.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/gopkg.in/cheggaaa/pb.v1/pool.go')
-rw-r--r--vendor/gopkg.in/cheggaaa/pb.v1/pool.go104
1 files changed, 0 insertions, 104 deletions
diff --git a/vendor/gopkg.in/cheggaaa/pb.v1/pool.go b/vendor/gopkg.in/cheggaaa/pb.v1/pool.go
deleted file mode 100644
index 392e7599c..000000000
--- a/vendor/gopkg.in/cheggaaa/pb.v1/pool.go
+++ /dev/null
@@ -1,104 +0,0 @@
-// +build linux darwin freebsd netbsd openbsd solaris dragonfly windows
-
-package pb
-
-import (
- "io"
- "sync"
- "time"
-)
-
-// Create and start new pool with given bars
-// You need call pool.Stop() after work
-func StartPool(pbs ...*ProgressBar) (pool *Pool, err error) {
- pool = new(Pool)
- if err = pool.Start(); err != nil {
- return
- }
- pool.Add(pbs...)
- return
-}
-
-// NewPool initialises a pool with progress bars, but
-// doesn't start it. You need to call Start manually
-func NewPool(pbs ...*ProgressBar) (pool *Pool) {
- pool = new(Pool)
- pool.Add(pbs...)
- return
-}
-
-type Pool struct {
- Output io.Writer
- RefreshRate time.Duration
- bars []*ProgressBar
- lastBarsCount int
- shutdownCh chan struct{}
- workerCh chan struct{}
- m sync.Mutex
- finishOnce sync.Once
-}
-
-// Add progress bars.
-func (p *Pool) Add(pbs ...*ProgressBar) {
- p.m.Lock()
- defer p.m.Unlock()
- for _, bar := range pbs {
- bar.ManualUpdate = true
- bar.NotPrint = true
- bar.Start()
- p.bars = append(p.bars, bar)
- }
-}
-
-func (p *Pool) Start() (err error) {
- p.RefreshRate = DefaultRefreshRate
- p.shutdownCh, err = lockEcho()
- if err != nil {
- return
- }
- p.workerCh = make(chan struct{})
- go p.writer()
- return
-}
-
-func (p *Pool) writer() {
- var first = true
- defer func() {
- if first == false {
- p.print(false)
- } else {
- p.print(true)
- p.print(false)
- }
- close(p.workerCh)
- }()
-
- for {
- select {
- case <-time.After(p.RefreshRate):
- if p.print(first) {
- p.print(false)
- return
- }
- first = false
- case <-p.shutdownCh:
- return
- }
- }
-}
-
-// Restore terminal state and close pool
-func (p *Pool) Stop() error {
- p.finishOnce.Do(func() {
- if p.shutdownCh != nil {
- close(p.shutdownCh)
- }
- })
-
- // Wait for the worker to complete
- select {
- case <-p.workerCh:
- }
-
- return unlockEcho()
-}