github.com/uchennaokeke444/nomad@v0.11.8/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 }