/* This is a common routine for possibly forcing the send of buffered signals and receiving response the thread is waiting for. It is designed to be useful from: 1) PK, UK lookups using the asynchronous interface This routine uses the wait_for_input routine instead since it has special end conditions due to the asynchronous nature of its usage. 2) Scans 3) dictSignal It uses a NdbWaiter object to wait on the events and this object is linked into the conditional wait queue. Thus this object contains a reference to its place in the queue. It replaces the method receiveResponse previously used on the Ndb object */ int PollGuard::wait_n_unlock(int wait_time, Uint32 nodeId, Uint32 state, bool forceSend) { int ret_val; m_waiter->set_node(nodeId); m_waiter->set_state(state); ret_val= wait_for_input_in_loop(wait_time, forceSend); unlock_and_signal(); return ret_val; }
~PollGuard() { unlock_and_signal(); }