From 28df7c855784e784fb0e614c1cca0e565a7ef75f Mon Sep 17 00:00:00 2001 From: Ondrej Fabry Date: Mon, 22 Oct 2018 14:45:21 +0200 Subject: Introduce StatsAPI and it's initial implementation - this implementation is basically Go wrapper around VPP's vppapiclient C library Change-Id: I6f53dc3e228868834bf3a8a00c686ad05e22f3dd Signed-off-by: Ondrej Fabry --- govpp.go | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) (limited to 'govpp.go') diff --git a/govpp.go b/govpp.go index ff45b78..f679242 100644 --- a/govpp.go +++ b/govpp.go @@ -20,16 +20,28 @@ import ( "git.fd.io/govpp.git/core" ) -var vppAdapter adapter.VppAdapter // VPP Adapter that will be used in the subsequent Connect calls +var ( + // VPP binary API adapter that will be used in the subsequent Connect calls + vppAdapter adapter.VppAPI +) + +func getVppAdapter(shm string) adapter.VppAPI { + if vppAdapter == nil { + vppAdapter = vppapiclient.NewVppClient(shm) + } + return vppAdapter +} + +// SetVppAdapter sets the adapter that will be used for connections to VPP in the subsequent `Connect` calls. +func SetVppAdapter(a adapter.VppAPI) { + vppAdapter = a +} // 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(shm string) (*core.Connection, error) { - if vppAdapter == nil { - vppAdapter = vppapiclient.NewVppAdapter(shm) - } - return core.Connect(vppAdapter) + return core.Connect(getVppAdapter(shm)) } // AsyncConnect asynchronously connects the govpp core to VPP either using the default VPP Adapter, @@ -38,13 +50,5 @@ func Connect(shm string) (*core.Connection, error) { // supposed to watch the returned ConnectionState channel for Connected/Disconnected events. // In case of disconnect, the library will asynchronously try to reconnect. func AsyncConnect(shm string) (*core.Connection, chan core.ConnectionEvent, error) { - if vppAdapter == nil { - vppAdapter = vppapiclient.NewVppAdapter(shm) - } - return core.AsyncConnect(vppAdapter) + return core.AsyncConnect(getVppAdapter(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 -} \ No newline at end of file -- cgit 1.2.3-korg