github.com/ferranbt/nomad@v0.9.3-0.20190607002617-85c449b7667c/nomad/structs/batch_future.go (about)

     1  package structs
     2  
     3  // BatchFuture is used to wait on a batch update to complete
     4  type BatchFuture struct {
     5  	doneCh chan struct{}
     6  	err    error
     7  	index  uint64
     8  }
     9  
    10  // NewBatchFuture creates a new batch future
    11  func NewBatchFuture() *BatchFuture {
    12  	return &BatchFuture{
    13  		doneCh: make(chan struct{}),
    14  	}
    15  }
    16  
    17  // Wait is used to block for the future to complete and returns the error
    18  func (b *BatchFuture) Wait() error {
    19  	<-b.doneCh
    20  	return b.err
    21  }
    22  
    23  // WaitCh is used to block for the future to complete
    24  func (b *BatchFuture) WaitCh() <-chan struct{} {
    25  	return b.doneCh
    26  }
    27  
    28  // Error is used to return the error of the batch, only after Wait()
    29  func (b *BatchFuture) Error() error {
    30  	return b.err
    31  }
    32  
    33  // Index is used to return the index of the batch, only after Wait()
    34  func (b *BatchFuture) Index() uint64 {
    35  	return b.index
    36  }
    37  
    38  // Respond is used to unblock the future
    39  func (b *BatchFuture) Respond(index uint64, err error) {
    40  	b.index = index
    41  	b.err = err
    42  	close(b.doneCh)
    43  }