use channel to communicate instead of sync/atomic
This commit is contained in:
parent
b08ae16191
commit
b14068cdea
15
main.go
15
main.go
|
@ -9,7 +9,6 @@ import (
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"sync/atomic"
|
|
||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
@ -37,7 +36,8 @@ func main() {
|
||||||
_ = cmd.Run()
|
_ = cmd.Run()
|
||||||
}()
|
}()
|
||||||
|
|
||||||
var isScreenSaverActive uint32
|
screenSaverCh := make(chan bool, 1)
|
||||||
|
defer close(screenSaverCh)
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
|
@ -55,9 +55,9 @@ func main() {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if strings.Contains(scanner.Text(), "boolean true") {
|
if strings.Contains(scanner.Text(), "boolean true") {
|
||||||
atomic.StoreUint32(&isScreenSaverActive, 1)
|
screenSaverCh <- true
|
||||||
} else {
|
} else {
|
||||||
atomic.StoreUint32(&isScreenSaverActive, 0)
|
screenSaverCh <- false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -67,14 +67,17 @@ func main() {
|
||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
|
|
||||||
ticker := time.NewTicker(25 * time.Minute)
|
isScreenSaverActive := false
|
||||||
|
ticker := time.NewTicker(30 * time.Minute)
|
||||||
defer ticker.Stop()
|
defer ticker.Stop()
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
return
|
return
|
||||||
|
case b := <-screenSaverCh:
|
||||||
|
isScreenSaverActive = b
|
||||||
case <-ticker.C:
|
case <-ticker.C:
|
||||||
if atomic.LoadUint32(&isScreenSaverActive) == 1 {
|
if isScreenSaverActive {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
_ = sendNotification(ctx)
|
_ = sendNotification(ctx)
|
||||||
|
|
Loading…
Reference in New Issue