github.com/henvic/wedeploycli@v1.7.6-0.20200319005353-3630f582f284/list/watch.go (about)

     1  package list
     2  
     3  import (
     4  	"context"
     5  	"time"
     6  
     7  	"github.com/henvic/wedeploycli/errorhandler"
     8  )
     9  
    10  func (l *List) watchHandler() {
    11  	select {
    12  	case <-l.ctx.Done():
    13  		return
    14  	case <-l.updated:
    15  	}
    16  
    17  	defer func() {
    18  		_ = l.w.Flush()
    19  		_ = l.livew.Flush()
    20  	}()
    21  
    22  	if l.ctx.Err() == context.Canceled {
    23  		return
    24  	}
    25  
    26  	l.watchMutex.RLock()
    27  	var le = l.lastError
    28  	var retry = l.retry
    29  	l.watchMutex.RUnlock()
    30  
    31  	if le != nil {
    32  		if l.once {
    33  			return
    34  		}
    35  
    36  		l.Printf("%v #%d\n", errorhandler.Handle(le), retry)
    37  		return
    38  	}
    39  
    40  	l.printProjects()
    41  }
    42  
    43  func (l *List) watch() {
    44  	l.w.Init(l.outStream)
    45  
    46  	var ticker = time.NewTicker(l.PoolingInterval)
    47  
    48  	for {
    49  		select {
    50  		case <-ticker.C:
    51  			l.watchHandler()
    52  		case <-l.ctx.Done():
    53  			ticker.Stop()
    54  			ticker = nil
    55  			return
    56  		}
    57  	}
    58  }