From 6122ad437da0d451748ad235836d6694eeaf91eb Mon Sep 17 00:00:00 2001 From: Dan Ballard Date: Sun, 7 Aug 2022 08:30:37 -0700 Subject: [PATCH] Get x Callbacks --- acn.go | 7 +++++-- error_acn.go | 6 +++++- localProvider.go | 6 +++++- proxy_acn.go | 11 ++++++++--- tor/torProvider.go | 8 +++++++- tor/torProvider_test.go | 2 +- 6 files changed, 31 insertions(+), 9 deletions(-) diff --git a/acn.go b/acn.go index f4e3077..d007216 100644 --- a/acn.go +++ b/acn.go @@ -38,9 +38,14 @@ type ACN interface { WaitTillBootstrapped() error // Sets the callback function to be called when ACN status changes SetStatusCallback(callback func(int, string)) + + GetStatusCallback() func(int, string) + // Sets the callback function to be called when ACN reboots to emit the version SetVersionCallback(callback func(string)) + GetVersionCallback() func(string) + // Restarts the underlying connection Restart() @@ -57,8 +62,6 @@ type ACN interface { // GetVersion returns a string of what the ACN returns when asked for a version GetVersion() string - Callback() func(int, string) - GetInfo(onion string) (map[string]string, error) Close() diff --git a/error_acn.go b/error_acn.go index b1c5e68..5b0416b 100644 --- a/error_acn.go +++ b/error_acn.go @@ -15,10 +15,14 @@ type ErrorACN struct { versionCallbackCache func(string) } -func (e ErrorACN) Callback() func(int, string) { +func (e ErrorACN) GetStatusCallback() func(int, string) { return e.statusCallbackCache } +func (e ErrorACN) GetVersionCallback() func(string) { + return e.versionCallbackCache +} + func (e *ErrorACN) GetInfo(addr string) (map[string]string, error) { return nil, errors.New(acnError) } diff --git a/localProvider.go b/localProvider.go index 1052894..2108bb8 100644 --- a/localProvider.go +++ b/localProvider.go @@ -18,10 +18,14 @@ func NewLocalACN() ACN { return &localProvider{} } -func (lp *localProvider) Callback() func(int, string) { +func (lp *localProvider) GetStatusCallback() func(int, string) { return func(int, string) {} } +func (lp *localProvider) GetVersionCallback() func(string) { + return func(string) {} +} + func (ls *localListenService) AddressFull() string { return ls.l.Addr().String() } diff --git a/proxy_acn.go b/proxy_acn.go index 910e48a..7187cc2 100644 --- a/proxy_acn.go +++ b/proxy_acn.go @@ -29,7 +29,8 @@ func (p *ProxyACN) ReplaceACN(acn ACN) { p.lock.Lock() defer p.lock.Unlock() p.acn.Close() - acn.SetStatusCallback(p.acn.Callback()) + acn.SetStatusCallback(p.acn.GetStatusCallback()) + acn.SetVersionCallback(p.acn.GetVersionCallback()) p.acn = acn } @@ -77,6 +78,10 @@ func (p *ProxyACN) Close() { p.acn.Close() } -func (p *ProxyACN) Callback() func(int, string) { - return p.acn.Callback() +func (p *ProxyACN) GetStatusCallback() func(int, string) { + return p.acn.GetStatusCallback() +} + +func (p *ProxyACN) GetVersionCallback() func(string) { + return p.acn.GetVersionCallback() } diff --git a/tor/torProvider.go b/tor/torProvider.go index 494e96a..79bf3a9 100644 --- a/tor/torProvider.go +++ b/tor/torProvider.go @@ -394,12 +394,18 @@ func (tp *torProvider) SetVersionCallback(callback func(string)) { tp.versionCallback = callback } -func (tp *torProvider) Callback() func(int, string) { +func (tp *torProvider) GetStatusCallback() func(int, string) { tp.lock.Lock() defer tp.lock.Unlock() return tp.statusCallback } +func (tp *torProvider) GetVersionCallback() func(string) { + tp.lock.Lock() + defer tp.lock.Unlock() + return tp.versionCallback +} + func (tp *torProvider) callStatusCallback(prog int, status string) { tp.lock.Lock() defer tp.lock.Unlock() diff --git a/tor/torProvider_test.go b/tor/torProvider_test.go index 38dd726..9967c4e 100644 --- a/tor/torProvider_test.go +++ b/tor/torProvider_test.go @@ -103,7 +103,7 @@ func TestTorProvider(t *testing.T) { acn.Close() - time.Sleep(time.Second * 5) + time.Sleep(time.Second * 10) goRoutineEnd := runtime.NumGoroutine()