From 97cc3ae151fb165c9cb4cf04996430c0e7b840b7 Mon Sep 17 00:00:00 2001 From: bel Date: Sat, 25 Mar 2023 10:25:11 -0600 Subject: [PATCH] refresh users global ch --- src/device/input/wrap/refresh.go | 17 ++++++++++++----- src/device/input/wrap/refresh_test.go | 2 +- src/device/input/wrap/wrap.go | 18 +++++++++++------- src/device/input/wrap/wrap_exported_test.go | 10 ++++++++++ 4 files changed, 34 insertions(+), 13 deletions(-) create mode 100644 src/device/input/wrap/wrap_exported_test.go diff --git a/src/device/input/wrap/refresh.go b/src/device/input/wrap/refresh.go index c4b3978..fbf5dab 100644 --- a/src/device/input/wrap/refresh.go +++ b/src/device/input/wrap/refresh.go @@ -6,6 +6,15 @@ import ( "mayhem-party/src/device/input/button" "os" "os/signal" + "syscall" +) + +var ( + ChanSigUsr1 = func() chan os.Signal { + c := make(chan os.Signal, 1) + signal.Notify(c, syscall.SIGUSR1) + return c + }() ) type Refresh struct { @@ -13,13 +22,11 @@ type Refresh struct { input Wrap } -func NewRefreshCh(sig os.Signal) <-chan os.Signal { - c := make(chan os.Signal, 1) - signal.Notify(c, sig) - return c +func NewRefresh(newWrap func() Wrap) *Refresh { + return NewRefreshWith(newWrap, ChanSigUsr1) } -func NewRefresh(newWrap func() Wrap, ch <-chan os.Signal) *Refresh { +func NewRefreshWith(newWrap func() Wrap, ch <-chan os.Signal) *Refresh { ctx, can := context.WithCancel(context.Background()) result := &Refresh{ can: can, diff --git a/src/device/input/wrap/refresh_test.go b/src/device/input/wrap/refresh_test.go index 85b37d5..9c21728 100644 --- a/src/device/input/wrap/refresh_test.go +++ b/src/device/input/wrap/refresh_test.go @@ -15,7 +15,7 @@ func TestRefresh(t *testing.T) { } ch := make(chan os.Signal, 1) defer close(ch) - refresh := NewRefresh(generator, ch) + refresh := NewRefreshWith(generator, ch) defer refresh.Close() assertIts := func(t *testing.T, b byte) { diff --git a/src/device/input/wrap/wrap.go b/src/device/input/wrap/wrap.go index 582fa79..eb8cf29 100644 --- a/src/device/input/wrap/wrap.go +++ b/src/device/input/wrap/wrap.go @@ -4,7 +4,12 @@ import ( "context" "mayhem-party/src/device/input/button" "os" - "syscall" +) + +var ( + FlagBuffered = os.Getenv("WRAP_BUFFERED") == "true" + FlagRemapFile = os.Getenv("WRAP_REMAP_FILE") + FlagRefreshOnSigUsr1 = os.Getenv("WRAP_REFRESH_ON_SIGUSR1") == "true" ) type Wrap interface { @@ -16,23 +21,22 @@ func New(ctx context.Context, srcFunc func() button.Parser) Wrap { maker := func() Wrap { return srcFunc() } - if os.Getenv("WRAP_BUFFERED") == "true" { + if FlagBuffered { oldMaker := maker maker = func() Wrap { return NewBuffered(ctx, oldMaker()) } } - if p := os.Getenv("WRAP_REMAP_FILE"); p != "" { + if FlagRemapFile != "" { oldMaker := maker maker = func() Wrap { - return NewRemapFromFile(oldMaker(), p) + return NewRemapFromFile(oldMaker(), FlagRemapFile) } } - if os.Getenv("WRAP_REFRESH_ON_SIGUSR1") != "" { + if FlagRefreshOnSigUsr1 { oldMaker := maker - c := NewRefreshCh(syscall.SIGUSR1) maker = func() Wrap { - return NewRefresh(oldMaker, c) + return NewRefresh(oldMaker) } } return maker() diff --git a/src/device/input/wrap/wrap_exported_test.go b/src/device/input/wrap/wrap_exported_test.go new file mode 100644 index 0000000..2eea17f --- /dev/null +++ b/src/device/input/wrap/wrap_exported_test.go @@ -0,0 +1,10 @@ +package wrap_test + +import ( + "mayhem-party/src/device/input/wrap" + "testing" +) + +func TestNewRefreshing(t *testing.T) { + wrap.FlagBuffered = true +}