// proxying request to given api.StatsProvider.
func NewStatsRPC(stats adapter.StatsAPI) (*StatsRPC, error) {
rpc := new(StatsRPC)
// proxying request to given api.StatsProvider.
func NewStatsRPC(stats adapter.StatsAPI) (*StatsRPC, error) {
rpc := new(StatsRPC)
s.statsConn, err = core.ConnectStats(s.stats)
if err == nil {
atomic.StoreUint32(&s.available, 1)
s.statsConn, err = core.ConnectStats(s.stats)
if err == nil {
atomic.StoreUint32(&s.available, 1)
if atomic.LoadUint32(&s.isConnected) == 1 {
atomic.StoreUint32(&s.isConnected, 0)
close(s.done)
if atomic.LoadUint32(&s.isConnected) == 1 {
atomic.StoreUint32(&s.isConnected, 0)
close(s.done)
// proxying request to given api.Channel.
func NewBinapiRPC(binapi adapter.VppAPI) (*BinapiRPC, error) {
rpc := new(BinapiRPC)
// proxying request to given api.Channel.
func NewBinapiRPC(binapi adapter.VppAPI) (*BinapiRPC, error) {
rpc := new(BinapiRPC)
if atomic.LoadUint32(&s.isConnected) == 1 {
atomic.StoreUint32(&s.isConnected, 0)
close(s.done)
if atomic.LoadUint32(&s.isConnected) == 1 {
atomic.StoreUint32(&s.isConnected, 0)
close(s.done)