code: func (a *vppClient) WaitReady() error {
  	// join the path to the shared memory segment
  	var path string
  	if a.shmPrefix == "" {
  		path = filepath.Join(shmDir, vppShmFile)
  	} else {
  		path = filepath.Join(shmDir, a.shmPrefix+"-"+vppShmFile)
  	}
  
  	// check if file at the path already exists
  	if _, err := os.Stat(path); err == nil {
  		// file exists, we are ready
  		return nil
  	} else if !os.IsNotExist(err) {
  		return err
  	}
  
  	// file does not exist, start watching folder
  	watcher, err := fsnotify.NewWatcher()
  	if err != nil {
  		return err
  	}
  	defer watcher.Close()
  
  	// start watching directory
  	if err := watcher.Add(shmDir); err != nil {
  		return err
  	}
  
  	for {
  		select {
  		case <-time.After(MaxWaitReady):
  			return fmt.Errorf("waiting for shared memory segment timed out (%s)", MaxWaitReady)
  		case e := <-watcher.Errors:
  			return e
  		case ev := <-watcher.Events:
  			if ev.Name == path {
  				if (ev.Op & fsnotify.Create) == fsnotify.Create {
  					// file was created, we are ready
  					return nil
  				}
  			}
  		}
  	}
  }
docs: // WaitReady blocks until shared memory for sending
  // binary api calls is present on the file system.