static const int max_outstanding_requests = 32;
static const int response_queue_size = 32;
+#define WAIT_FOR_RESPONSE(param, ret) \
+ do \
+ { \
+ ret = con.wait_for_response (param); \
+ } \
+ while (ret == VAPI_EAGAIN)
+
using namespace vapi;
void verify_show_version_reply (const Show_version_reply &r)
Show_version sv (con);
vapi_error_e rv = sv.execute ();
ck_assert_int_eq (VAPI_OK, rv);
- rv = con.wait_for_response (sv);
+ WAIT_FOR_RESPONSE (sv, rv);
ck_assert_int_eq (VAPI_OK, rv);
auto &r = sv.get_response ();
verify_show_version_reply (r);
memcpy (p.mac_address, mac_addresses[i], sizeof (p.mac_address));
auto e = cl.execute ();
ck_assert_int_eq (VAPI_OK, e);
- vapi_error_e rv = con.wait_for_response (cl);
+ vapi_error_e rv;
+ WAIT_FOR_RESPONSE (cl, rv);
ck_assert_int_eq (VAPI_OK, rv);
auto &rp = cl.get_response ().get_payload ();
ck_assert_int_eq (0, rp.retval);
memset (p.name_filter, 0, sizeof (p.name_filter));
auto rv = d.execute ();
ck_assert_int_eq (VAPI_OK, rv);
- rv = con.wait_for_response (d);
+ WAIT_FOR_RESPONSE (d, rv);
ck_assert_int_eq (VAPI_OK, rv);
auto &rs = d.get_result_set ();
for (auto &r : rs)
dl.get_request ().get_payload ().sw_if_index = sw_if_indexes[i];
auto rv = dl.execute ();
ck_assert_int_eq (VAPI_OK, rv);
- rv = con.wait_for_response (dl);
+ WAIT_FOR_RESPONSE (dl, rv);
ck_assert_int_eq (VAPI_OK, rv);
auto &response = dl.get_response ();
auto rp = response.get_payload ();
memset (p.name_filter, 0, sizeof (p.name_filter));
auto rv = d.execute ();
ck_assert_int_eq (VAPI_OK, rv);
- rv = con.wait_for_response (d);
+ WAIT_FOR_RESPONSE (d, rv);
ck_assert_int_eq (VAPI_OK, rv);
auto &rs = d.get_result_set ();
for (auto &r : rs)
memset (p.name_filter, 0, sizeof (p.name_filter));
auto rv = d.execute ();
ck_assert_int_eq (VAPI_OK, rv);
- rv = con.wait_for_response (d);
+ WAIT_FOR_RESPONSE (d, rv);
ck_assert_int_eq (VAPI_OK, rv);
ck_assert_int_ne (0, swdcb.called);
std::array<Delete_loopback_cb, num_ifs> dcbs;
memset (p.name_filter, 0, sizeof (p.name_filter));
auto rv = d.execute ();
ck_assert_int_eq (VAPI_OK, rv);
- rv = con.wait_for_response (d);
+ WAIT_FOR_RESPONSE (d, rv);
ck_assert_int_eq (VAPI_OK, rv);
auto &rs = d.get_result_set ();
for (auto &r : rs)
auto rv = ws.execute ();
ck_assert_int_eq (VAPI_OK, rv);
Event_registration<Vnet_interface_simple_counters> sc (con);
- rv = con.wait_for_response (sc);
+ WAIT_FOR_RESPONSE (sc, rv);
ck_assert_int_eq (VAPI_OK, rv);
auto &rs = sc.get_result_set ();
int count = 0;
ck_assert_int_eq (VAPI_OK, rv);
Vnet_interface_simple_counters_cb cb;
Event_registration<Vnet_interface_simple_counters> sc (con, std::ref (cb));
- rv = con.wait_for_response (sc);
+ WAIT_FOR_RESPONSE (sc, rv);
ck_assert_int_eq (VAPI_OK, rv);
ck_assert_int_ne (0, cb.called);
}
Event_registration<Vnet_interface_simple_counters> sc (con, std::ref (cb));
for (int i = 0; i < 5; ++i)
{
- rv = con.wait_for_response (sc);
+ WAIT_FOR_RESPONSE (sc, rv);
}
ck_assert_int_eq (VAPI_OK, rv);
ck_assert_int_eq (5, cb.called);
ck_assert_int_eq (VAPI_OK, rv);
Event_registration<Vnet_interface_simple_counters> sc (con);
Event_registration<Vnet_interface_combined_counters> cc (con);
- rv = con.wait_for_response (sc);
+ WAIT_FOR_RESPONSE (sc, rv);
ck_assert_int_eq (VAPI_OK, rv);
- rv = con.wait_for_response (cc);
+ WAIT_FOR_RESPONSE (cc, rv);
ck_assert_int_eq (VAPI_OK, rv);
int count = 0;
for (auto &r : sc.get_result_set ())