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  }