docs: change code blocks from "shell" to "console"
[vpp.git] / src / vpp-api / java / jvpp-core / io / fd / vpp / jvpp / core / examples / CallbackJVppFacadeNotificationExample.java
1 /*
2  * Copyright (c) 2016 Cisco and/or its affiliates.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at:
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package io.fd.vpp.jvpp.core.examples;
18
19 import io.fd.vpp.jvpp.JVppRegistry;
20 import io.fd.vpp.jvpp.JVppRegistryImpl;
21 import io.fd.vpp.jvpp.VppCallbackException;
22 import io.fd.vpp.jvpp.core.JVppCore;
23 import io.fd.vpp.jvpp.core.JVppCoreImpl;
24 import io.fd.vpp.jvpp.core.callback.WantInterfaceEventsReplyCallback;
25 import io.fd.vpp.jvpp.core.callback.SwInterfaceEventCallback;
26 import io.fd.vpp.jvpp.core.callfacade.CallbackJVppCoreFacade;
27 import io.fd.vpp.jvpp.core.dto.WantInterfaceEventsReply;
28 import io.fd.vpp.jvpp.core.dto.SwInterfaceEvent;
29
30 public class CallbackJVppFacadeNotificationExample {
31
32     private static void testCallbackFacade() throws Exception {
33         System.out.println("Testing CallbackJVppFacade for notifications");
34
35         try (final JVppRegistry registry = new JVppRegistryImpl("CallbackFacadeExample");
36              final JVppCore jvpp = new JVppCoreImpl()) {
37             final CallbackJVppCoreFacade jvppCallbackFacade = new CallbackJVppCoreFacade(registry, jvpp);
38             System.out.println("Successfully connected to VPP");
39
40             final AutoCloseable notificationListenerReg =
41                 jvppCallbackFacade.getEventRegistry().registerSwInterfaceEventCallback(
42                         new SwInterfaceEventCallback() {
43                             public void onSwInterfaceEvent(SwInterfaceEvent reply) {
44                                 System.out.printf("Received interface notification: ifc: %s%n", reply);
45                             }
46
47                             public void onError (VppCallbackException ex) {
48                                 System.out.printf("Received onError exception: call=%s, context=%d, retval=%d%n",
49                                         ex.getMethodName(), ex.getCtxId(), ex.getErrorCode());
50                             }
51                         });
52
53             jvppCallbackFacade.wantInterfaceEvents(NotificationUtils.getEnableInterfaceNotificationsReq(),
54                 new WantInterfaceEventsReplyCallback() {
55                     @Override
56                     public void onWantInterfaceEventsReply(final WantInterfaceEventsReply reply) {
57                         System.out.println("Interface events started");
58                     }
59
60                     @Override
61                     public void onError(final VppCallbackException ex) {
62                         System.out.printf("Received onError exception: call=%s, context=%d, retval=%d%n",
63                             ex.getMethodName(), ex.getCtxId(), ex.getErrorCode());
64                     }
65                 });
66
67             System.out.println("Changing interface configuration");
68             NotificationUtils.getChangeInterfaceState().send(jvpp);
69
70             Thread.sleep(1000);
71
72             jvppCallbackFacade.wantInterfaceEvents(NotificationUtils.getDisableInterfaceNotificationsReq(),
73                 new WantInterfaceEventsReplyCallback() {
74                     @Override
75                     public void onWantInterfaceEventsReply(final WantInterfaceEventsReply reply) {
76                         System.out.println("Interface events stopped");
77                     }
78
79                     @Override
80                     public void onError(final VppCallbackException ex) {
81                         System.out.printf("Received onError exception: call=%s, context=%d, retval=%d%n",
82                             ex.getMethodName(), ex.getCtxId(), ex.getErrorCode());
83                     }
84                 });
85
86             notificationListenerReg.close();
87
88             Thread.sleep(2000);
89             System.out.println("Disconnecting...");
90         }
91         Thread.sleep(1000);
92     }
93
94     public static void main(String[] args) throws Exception {
95         testCallbackFacade();
96     }
97 }