X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=govpp.go;h=6f0cc2e826d149af25b1c4acbc77eee523263671;hb=e7cec91c8720eddd1ccff3403099b60ee3da0ccd;hp=82ee5f88016cfd7e92aeeaeadbe174837dd241f2;hpb=96c3dce9de1aded53c1e4bf098817fc59692eb64;p=govpp.git diff --git a/govpp.go b/govpp.go index 82ee5f8..6f0cc2e 100644 --- a/govpp.go +++ b/govpp.go @@ -15,15 +15,16 @@ 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" + "git.fd.io/govpp.git/adapter" + "git.fd.io/govpp.git/adapter/vppapiclient" + "git.fd.io/govpp.git/core" ) var vppAdapter adapter.VppAdapter // VPP Adapter that will be used in the subsequent Connect calls // 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). +// This call blocks until VPP is connected, or an error occurs. Only one connection attempt will be performed. func Connect() (*core.Connection, error) { if vppAdapter == nil { vppAdapter = vppapiclient.NewVppAdapter() @@ -31,6 +32,18 @@ func Connect() (*core.Connection, error) { return core.Connect(vppAdapter) } +// 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 connection is established, it returns immediately. The caller is +// supposed to watch the returned ConnectionState channel for Connected/Disconnected events. +// In case of disconnect, the library will asynchronously try to reconnect. +func AsyncConnect() (*core.Connection, chan core.ConnectionEvent, error) { + if vppAdapter == nil { + vppAdapter = vppapiclient.NewVppAdapter() + } + return core.AsyncConnect(vppAdapter) +} + // SetAdapter sets the adapter that will be used for connections to VPP in the subsequent `Connect` calls. func SetAdapter(ad adapter.VppAdapter) { vppAdapter = ad