X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=govpp.go;h=822739c0e32b2e246e35bdacb3f7d5905e28d390;hb=d1f24d37bd447b64e402298bb8eb2479681facf9;hp=82ee5f88016cfd7e92aeeaeadbe174837dd241f2;hpb=96c3dce9de1aded53c1e4bf098817fc59692eb64;p=govpp.git diff --git a/govpp.go b/govpp.go index 82ee5f8..822739c 100644 --- a/govpp.go +++ b/govpp.go @@ -15,23 +15,24 @@ package govpp import ( - "gerrit.fd.io/r/govpp.git/adapter" - "gerrit.fd.io/r/govpp.git/adapter/vppapiclient" - "gerrit.fd.io/r/govpp.git/core" -) + "time" -var vppAdapter adapter.VppAdapter // VPP Adapter that will be used in the subsequent Connect calls + "git.fd.io/govpp.git/adapter/socketclient" + "git.fd.io/govpp.git/core" +) // Connect connects the govpp core to VPP either using the default VPP Adapter, or using the adapter previously // set by SetAdapter (useful mostly just for unit/integration tests with mocked VPP adapter). -func Connect() (*core.Connection, error) { - if vppAdapter == nil { - vppAdapter = vppapiclient.NewVppAdapter() - } - return core.Connect(vppAdapter) +// This call blocks until VPP is connected, or an error occurs. Only one connection attempt will be performed. +func Connect(shm string) (*core.Connection, error) { + return core.Connect(socketclient.NewVppClient(shm)) } -// SetAdapter sets the adapter that will be used for connections to VPP in the subsequent `Connect` calls. -func SetAdapter(ad adapter.VppAdapter) { - vppAdapter = ad +// AsyncConnect asynchronously connects the govpp core to VPP either using the default VPP Adapter, +// or using the adapter previously set by SetAdapter. +// This call does not block until the connection is established, it returns immediately. The caller is +// supposed to watch the returned ConnectionState channel for Connected/Disconnected events. +// In case of a disconnect, the library will asynchronously try to reconnect. +func AsyncConnect(shm string, attempts int, interval time.Duration) (*core.Connection, chan core.ConnectionEvent, error) { + return core.AsyncConnect(socketclient.NewVppClient(shm), attempts, interval) }