// 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
}
}
// 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
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 {
// 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}