Get x Callbacks
continuous-integration/drone/pr Build is passing Details
continuous-integration/drone/push Build was killed Details

This commit is contained in:
Dan Ballard 2022-08-07 08:30:37 -07:00
parent 882849b66a
commit 6122ad437d
6 changed files with 31 additions and 9 deletions

7
acn.go
View File

@ -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()

View File

@ -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)
}

View File

@ -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()
}

View File

@ -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()
}

View File

@ -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()

View File

@ -103,7 +103,7 @@ func TestTorProvider(t *testing.T) {
acn.Close()
time.Sleep(time.Second * 5)
time.Sleep(time.Second * 10)
goRoutineEnd := runtime.NumGoroutine()