mirror of
https://gitlab.com/pulsechaincom/erigon-pulse.git
synced 2025-01-04 01:54:28 +00:00
30 lines
358 B
Go
30 lines
358 B
Go
|
package common
|
||
|
|
||
|
import "errors"
|
||
|
|
||
|
var ErrStopped = errors.New("stopped")
|
||
|
|
||
|
func Stopped(ch chan struct{}) error {
|
||
|
if ch == nil {
|
||
|
return nil
|
||
|
}
|
||
|
select {
|
||
|
case <-ch:
|
||
|
return ErrStopped
|
||
|
default:
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func SafeClose(ch chan struct{}) {
|
||
|
if ch == nil {
|
||
|
return
|
||
|
}
|
||
|
select {
|
||
|
case <-ch:
|
||
|
// Channel was already closed
|
||
|
default:
|
||
|
close(ch)
|
||
|
}
|
||
|
}
|