X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=govpp.go;h=6f0cc2e826d149af25b1c4acbc77eee523263671;hb=40cdb18263ac2624c5a007ef1b0ac7d1b21974bd;hp=5d3ed7f10ccf2c3a77f2d2a2fbd2d4886b738ab5;hpb=cf7fbee5c540d16a162236b476d438c66f513ad9;p=govpp.git diff --git a/govpp.go b/govpp.go index 5d3ed7f..6f0cc2e 100644 --- a/govpp.go +++ b/govpp.go @@ -24,6 +24,7 @@ var vppAdapter adapter.VppAdapter // VPP Adapter that will be used in the subseq // 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