github.com/0chain/gosdk@v1.17.11/zboxcore/sdk/live_upload_context.go (about) 1 package sdk 2 3 import ( 4 "context" 5 "os" 6 "os/signal" 7 "syscall" 8 ) 9 10 // SignalContext listen syscall signal to cancel context 11 type SignalContext struct { 12 context.Context 13 } 14 15 // NewSignalContext create SignalContext instance 16 func NewSignalContext(ctx context.Context) context.Context { 17 18 sc := &SignalContext{} 19 20 c, cancel := context.WithCancel(ctx) 21 22 sc.Context = c 23 24 s := make(chan os.Signal, 1) 25 signal.Notify(s, syscall.SIGINT, syscall.SIGTERM) 26 27 go func() { 28 <-s 29 cancel() 30 }() 31 32 return sc 33 }