diff options
-rw-r--r-- | adapter/adapter.go | 4 | ||||
-rw-r--r-- | adapter/mock/mock_adapter.go | 4 | ||||
-rw-r--r-- | adapter/vppapiclient/vppapiclient_adapter.go | 42 | ||||
-rw-r--r-- | core/core.go | 3 |
4 files changed, 25 insertions, 28 deletions
diff --git a/adapter/adapter.go b/adapter/adapter.go index d8f29c9..a5b3352 100644 --- a/adapter/adapter.go +++ b/adapter/adapter.go @@ -31,6 +31,6 @@ type VppAdapter interface { // SetMsgCallback sets a callback function that will be called by the adapter whenever a message comes from VPP. SetMsgCallback(func(context uint32, msgId uint16, data []byte)) - // WaitReady returns func which waits until adapter is ready. - WaitReady() func() error + // WaitReady waits until adapter is ready. + WaitReady() error } diff --git a/adapter/mock/mock_adapter.go b/adapter/mock/mock_adapter.go index f85f17d..5407696 100644 --- a/adapter/mock/mock_adapter.go +++ b/adapter/mock/mock_adapter.go @@ -295,8 +295,8 @@ func (a *VppAdapter) SetMsgCallback(cb func(context uint32, msgID uint16, data [ } // WaitReady mocks waiting for VPP -func (a *VppAdapter) WaitReady() func() error { - return func() error { return nil } +func (a *VppAdapter) WaitReady() error { + return nil } // MockReply stores a message to be returned when the next request comes. It is a FIFO queue - multiple replies diff --git a/adapter/vppapiclient/vppapiclient_adapter.go b/adapter/vppapiclient/vppapiclient_adapter.go index dfdd973..1cdaf72 100644 --- a/adapter/vppapiclient/vppapiclient_adapter.go +++ b/adapter/vppapiclient/vppapiclient_adapter.go @@ -150,33 +150,31 @@ func (a *vppAPIClientAdapter) SetMsgCallback(cb func(context uint32, msgID uint1 a.callback = cb } -// WaitReady returns func which blocks until shared memory -// for sending bin api calls is present on the file system. -func (a *vppAPIClientAdapter) WaitReady() func() error { - return func() error { - watcher, err := fsnotify.NewWatcher() - if err != nil { - return err - } - defer watcher.Close() +// WaitReady blocks until shared memory for sending +// binary api calls is present on the file system. +func (a *vppAPIClientAdapter) WaitReady() error { + watcher, err := fsnotify.NewWatcher() + if err != nil { + return err + } + defer watcher.Close() - err = watcher.Add(watchedFolder) - if err != nil { - return err - } + err = watcher.Add(watchedFolder) + if err != nil { + return err + } - if fileExists(watchedFile) { - return nil - } + if fileExists(watchedFile) { + return nil + } - for { - ev := <-watcher.Events - if ev.Name == watchedFile && (ev.Op&fsnotify.Create) == fsnotify.Create { - break - } + for { + ev := <-watcher.Events + if ev.Name == watchedFile && (ev.Op&fsnotify.Create) == fsnotify.Create { + break } - return nil } + return nil } func fileExists(name string) bool { diff --git a/core/core.go b/core/core.go index c254214..ab0c6bf 100644 --- a/core/core.go +++ b/core/core.go @@ -232,9 +232,8 @@ func (c *Connection) disconnectVPP() { // Then it continues with healthCheckLoop. func (c *Connection) connectLoop(connChan chan ConnectionEvent) { // loop until connected - waitForVpp := c.vpp.WaitReady() for { - waitForVpp() + c.vpp.WaitReady() if err := c.connectVPP(); err == nil { // signal connected event connChan <- ConnectionEvent{Timestamp: time.Now(), State: Connected} |