X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvpp-api%2Fvapi%2Fvapi.hpp;h=a1e33a93fd4f9fd06c729ca00f15a340c914e72d;hb=dab732a;hp=3be78b41b0a90473e41ee95e866ecf82434a847f;hpb=dc15be2ca7c51772b00e4c5548934a35aa7e4add;p=vpp.git diff --git a/src/vpp-api/vapi/vapi.hpp b/src/vpp-api/vapi/vapi.hpp index 3be78b41b0a..a1e33a93fd4 100644 --- a/src/vpp-api/vapi/vapi.hpp +++ b/src/vpp-api/vapi/vapi.hpp @@ -105,7 +105,8 @@ public: private: Connection &con; - Common_req (Connection &con) : con{con}, response_state{RESPONSE_NOT_READY} + Common_req (Connection &con) + : con (con), context{0}, response_state{RESPONSE_NOT_READY} { } @@ -194,15 +195,17 @@ public: * @param name application name * @param chroot_prefix shared memory prefix * @param max_queued_request max number of outstanding requests queued + * @param handle_keepalives handle memclnt_keepalive automatically * * @return VAPI_OK on success, other error code on error */ vapi_error_e connect (const char *name, const char *chroot_prefix, - int max_outstanding_requests, int response_queue_size) + int max_outstanding_requests, int response_queue_size, + bool handle_keepalives = true) { return vapi_connect (vapi_ctx, name, chroot_prefix, max_outstanding_requests, response_queue_size, - VAPI_MODE_BLOCKING); + VAPI_MODE_BLOCKING, handle_keepalives); } /** @@ -244,7 +247,7 @@ public: * * @return VAPI_OK on success, other error code on error */ - vapi_error_e dispatch (const Common_req *limit = nullptr) + vapi_error_e dispatch (const Common_req *limit = nullptr, u32 time = 5) { std::lock_guard lock (dispatch_mutex); vapi_error_e rv = VAPI_OK; @@ -253,7 +256,8 @@ public: { void *shm_data; size_t shm_data_size; - rv = vapi_recv (vapi_ctx, &shm_data, &shm_data_size); + rv = vapi_recv (vapi_ctx, &shm_data, &shm_data_size, SVM_Q_TIMEDWAIT, + time); if (VAPI_OK != rv) { return rv; @@ -577,18 +581,18 @@ private: static void set_msg_id (vapi_msg_id_t id) { - assert ((~0 == *msg_id_holder ()) || (id == *msg_id_holder ())); + assert ((VAPI_INVALID_MSG_ID == *msg_id_holder ()) || + (id == *msg_id_holder ())); *msg_id_holder () = id; } static vapi_msg_id_t *msg_id_holder () { - static vapi_msg_id_t my_id{~0}; + static vapi_msg_id_t my_id{VAPI_INVALID_MSG_ID}; return &my_id; } - Msg (Connection &con, void *shm_data) throw (Msg_not_available_exception) - : con{con} + Msg (Connection &con, void *shm_data) : con{con} { if (!con.is_msg_available (get_msg_id ())) { @@ -599,8 +603,7 @@ private: this, shm_data); } - void assign_response (vapi_msg_id_t resp_id, - void *shm_data) throw (Unexpected_msg_id_exception) + void assign_response (vapi_msg_id_t resp_id, void *shm_data) { assert (nullptr == this->shm_data); if (resp_id != get_msg_id ()) @@ -745,8 +748,7 @@ private: complete = true; } - void assign_response (vapi_msg_id_t resp_id, - void *shm_data) throw (Unexpected_msg_id_exception) + void assign_response (vapi_msg_id_t resp_id, void *shm_data) { if (resp_id != Msg::get_msg_id ()) { @@ -762,7 +764,7 @@ private: } } - Result_set (Connection &con) : con{con}, complete{false} + Result_set (Connection &con) : con (con), complete{false} { } @@ -852,8 +854,7 @@ template class Event_registration : public Common_req public: Event_registration ( Connection &con, - std::function &)> callback = - nullptr) throw (Msg_not_available_exception) + std::function &)> callback = nullptr) : Common_req{con}, result_set{con}, callback{callback} { if (!con.is_msg_available (M::get_msg_id ()))