close.go 496 B

1234567891011121314151617181920212223242526272829
  1. package signal
  2. type CancelSignal struct {
  3. cancel chan struct{}
  4. done chan struct{}
  5. }
  6. func NewCloseSignal() *CancelSignal {
  7. return &CancelSignal{
  8. cancel: make(chan struct{}),
  9. done: make(chan struct{}),
  10. }
  11. }
  12. func (this *CancelSignal) Cancel() {
  13. close(this.cancel)
  14. }
  15. func (this *CancelSignal) WaitForCancel() <-chan struct{} {
  16. return this.cancel
  17. }
  18. func (this *CancelSignal) Done() {
  19. close(this.done)
  20. }
  21. func (this *CancelSignal) WaitForDone() <-chan struct{} {
  22. return this.done
  23. }