mirror of
https://github.com/kubenetworks/kubevpn.git
synced 2025-10-21 14:29:33 +08:00
30 lines
396 B
Go
30 lines
396 B
Go
package util
|
|
|
|
func SafeRead[T any](c chan T) (T, bool) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
}
|
|
}()
|
|
tt, ok := <-c
|
|
return tt, ok
|
|
}
|
|
|
|
func SafeWrite[T any](c chan<- T, value T) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
}
|
|
}()
|
|
select {
|
|
case c <- value:
|
|
default:
|
|
}
|
|
}
|
|
|
|
func SafeClose[T any](c chan T) {
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
}
|
|
}()
|
|
close(c)
|
|
}
|