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}
{
}
* @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);
}
/**
*
* @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<std::mutex> lock (dispatch_mutex);
vapi_error_e rv = VAPI_OK;
{
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;
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;
}