run_token.go 467 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package pipeline
  2. type RunToken struct {
  3. Result any
  4. Err error
  5. doneChan chan any
  6. }
  7. func NewRunToken() *RunToken {
  8. return &RunToken{
  9. Result: nil,
  10. Err: nil,
  11. doneChan: make(chan any),
  12. }
  13. }
  14. func (token *RunToken) Wait() {
  15. if token.doneChan == nil {
  16. return
  17. }
  18. for {
  19. select {
  20. case <-token.doneChan:
  21. return
  22. }
  23. }
  24. }
  25. func (token *RunToken) Done() {
  26. if token.doneChan == nil {
  27. return
  28. }
  29. close(token.doneChan)
  30. token.doneChan = nil
  31. }