binary-api debug CLI works with plugins

Change-Id: I81f33f5153d5afac94b66b5a8cb91da77463af79
Signed-off-by: Dave Barach <dave@barachs.net>
diff --git a/src/vlibapi/api_helper_macros.h b/src/vlibapi/api_helper_macros.h
index 16f34cf..7f94e44 100644
--- a/src/vlibapi/api_helper_macros.h
+++ b/src/vlibapi/api_helper_macros.h
@@ -17,7 +17,6 @@
  *------------------------------------------------------------------
  */
 
-
 #ifndef __api_helper_macros_h__
 #define __api_helper_macros_h__
 
diff --git a/src/vlibapi/vat_helper_macros.h b/src/vlibapi/vat_helper_macros.h
new file mode 100644
index 0000000..7199364
--- /dev/null
+++ b/src/vlibapi/vat_helper_macros.h
@@ -0,0 +1,76 @@
+/*
+ *------------------------------------------------------------------
+ * vat_helper_macros.h - collect api client helper macros in one place
+ *
+ * Copyright (c) 2016 Cisco and/or its affiliates.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *------------------------------------------------------------------
+ */
+#ifndef __vat_helper_macros_h__
+#define __vat_helper_macros_h__
+
+/* M: construct, but don't yet send a message */
+
+#define M(T,t)                                          \
+do {                                                    \
+    vam->result_ready = 0;                              \
+    mp = vl_msg_api_alloc_as_if_client(sizeof(*mp));    \
+    memset (mp, 0, sizeof (*mp));                       \
+    mp->_vl_msg_id = ntohs (VL_API_##T);                \
+    mp->client_index = vam->my_client_index;            \
+} while(0);
+
+#define M2(T,t,n)                                               \
+do {                                                            \
+    vam->result_ready = 0;                                      \
+    mp = vl_msg_api_alloc_as_if_client(sizeof(*mp)+(n));        \
+    memset (mp, 0, sizeof (*mp));                               \
+    mp->_vl_msg_id = ntohs (VL_API_##T);                        \
+    mp->client_index = vam->my_client_index;                    \
+} while(0);
+
+
+/* S: send a message */
+#define S (vl_msg_api_send_shmem (vam->vl_input_queue, (u8 *)&mp))
+
+/* W: wait for results, with timeout */
+#define W                                       \
+do {                                            \
+    timeout = vat_time_now (vam) + 1.0;         \
+                                                \
+    while (vat_time_now (vam) < timeout) {      \
+        if (vam->result_ready == 1) {           \
+            return (vam->retval);               \
+        }                                       \
+        vat_suspend (vam->vlib_main, 1e-5);     \
+    }                                           \
+    return -99;                                 \
+} while(0);
+
+/* W2: wait for results, with timeout */
+#define W2(body)                                \
+do {                                            \
+    timeout = vat_time_now (vam) + 1.0;         \
+                                                \
+    while (vat_time_now (vam) < timeout) {      \
+        if (vam->result_ready == 1) {           \
+	  (body);                               \
+	  return (vam->retval);                 \
+        }                                       \
+        vat_suspend (vam->vlib_main, 1e-5);     \
+    }                                           \
+    return -99;                                 \
+} while(0);
+
+
+#endif /* __vat_helper_macros_h__ */