package state import ( "sync" ) // AppState holds pointers to channels and waitGroups // shared by all goroutines of the application type AppState struct { waitGroup sync.WaitGroup termSig chan bool } // NewState creates a new app state func NewState() *AppState { state := &AppState{ // buffered channel termSig: make(chan bool, 1), } return state } // GetWaitGroup returns the state's wg func (state *AppState) GetWaitGroup() *sync.WaitGroup { return &state.waitGroup } // GetTermSig returns the state's term signal func (state *AppState) GetTermSig() chan bool { return state.termSig }