X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=examples%2Fcmd%2Fsimple-client%2Fsimple_client.go;fp=examples%2Fexample_client.go;h=6e46d6b34c105a2a881dd3302d0a5ff78cf900f1;hb=2d07847237e754d9050f06f565baa430c70ed937;hp=f2e58046f7d7d3556a0c3c6c0fc609606d99638f;hpb=c38cb25d746736f062ee16e87f553c8a4ec5fced;p=govpp.git diff --git a/examples/example_client.go b/examples/cmd/simple-client/simple_client.go similarity index 75% rename from examples/example_client.go rename to examples/cmd/simple-client/simple_client.go index f2e5804..6e46d6b 100644 --- a/examples/example_client.go +++ b/examples/cmd/simple-client/simple_client.go @@ -12,7 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -// Example VPP management application that exercises the govpp API on real-world use-cases. +// Binary simple-client is an example VPP management application that exercises the +// govpp API on real-world use-cases. package main // Generates Go bindings for all VPP APIs located in the json directory. @@ -22,19 +23,16 @@ import ( "fmt" "net" "os" - "os/signal" "git.fd.io/govpp.git" "git.fd.io/govpp.git/api" - "git.fd.io/govpp.git/api/ifcounters" - "git.fd.io/govpp.git/core/bin_api/vpe" "git.fd.io/govpp.git/examples/bin_api/acl" "git.fd.io/govpp.git/examples/bin_api/interfaces" "git.fd.io/govpp.git/examples/bin_api/tap" ) func main() { - fmt.Println("Starting example VPP client...") + fmt.Println("Starting simple VPP client...") // connect to VPP conn, err := govpp.Connect() @@ -64,8 +62,6 @@ func main() { interfaceDump(ch) interfaceNotifications(ch) - - //interfaceCounters(ch) } // compatibilityCheck shows how an management application can check whether generated API messages are @@ -223,56 +219,3 @@ func interfaceNotifications(ch *api.Channel) { // unsubscribe from delivery of the notifications ch.UnsubscribeNotification(subs) } - -// interfaceCounters is an example of using notification API to periodically retrieve interface statistics. -// The ifcounters package contains the API that can be used to decode the strange VnetInterfaceCounters message. -func interfaceCounters(ch *api.Channel) { - // subscribe for interface counters notifications - notifChan := make(chan api.Message, 100) - subs, _ := ch.SubscribeNotification(notifChan, interfaces.NewVnetInterfaceCounters) - - // enable interface counters notifications from VPP - ch.SendRequest(&vpe.WantStats{ - Pid: uint32(os.Getpid()), - EnableDisable: 1, - }).ReceiveReply(&vpe.WantStatsReply{}) - - // create channel for Interrupt signal - sigChan := make(chan os.Signal, 1) - signal.Notify(sigChan, os.Interrupt) - - // loop until Interrupt signal is received -loop: - for { - select { - case <-sigChan: - // interrupt received - break loop - case notifMsg := <-notifChan: - notif := notifMsg.(*interfaces.VnetInterfaceCounters) - // notification received - fmt.Printf("%+v\n", notif) - - if notif.IsCombined == 0 { - // simple counter - counters, err := ifcounters.DecodeCounters(ifcounters.VnetInterfaceCounters(*notif)) - if err != nil { - fmt.Println("Error:", err) - } else { - fmt.Printf("%+v\n", counters) - } - } else { - // combined counter - counters, err := ifcounters.DecodeCombinedCounters(ifcounters.VnetInterfaceCounters(*notif)) - if err != nil { - fmt.Println("Error:", err) - } else { - fmt.Printf("%+v\n", counters) - } - } - } - } - - // unsubscribe from delivery of the notifications - ch.UnsubscribeNotification(subs) -}