github.com/insolar/vanilla@v0.0.0-20201023172447-248fdf805322/synckit/closed_channel.go (about) 1 // Copyright 2020 Insolar Network Ltd. 2 // All rights reserved. 3 // This material is licensed under the Insolar License version 1.0, 4 // available at https://github.com/insolar/assured-ledger/blob/master/LICENSE.md. 5 6 package synckit 7 8 import "github.com/insolar/vanilla/throw" 9 10 type SignalChannel = <-chan struct{} 11 12 type ClosableSignalChannel = chan struct{} 13 14 func ClosedChannel() SignalChannel { 15 return closedChan 16 } 17 18 var closedChan = func() SignalChannel { 19 c := make(ClosableSignalChannel) 20 close(c) 21 return c 22 }() 23 24 func SafeClose(c ClosableSignalChannel) (err error) { 25 defer func() { 26 err = throw.R(recover(), err) 27 }() 28 close(c) 29 return nil 30 }