void blocking_actor::dequeue(behavior& bhvr, message_id mid) { CAF_LOG_TRACE(CAF_MARG(mid, integer_value)); // try to dequeue from cache first if (invoke_from_cache(bhvr, mid)) { return; } // requesting an invalid timeout will reset our active timeout uint32_t timeout_id = 0; if (mid == invalid_message_id) { timeout_id = request_timeout(bhvr.timeout()); } else { request_sync_timeout_msg(bhvr.timeout(), mid); } // read incoming messages for (;;) { await_data(); auto msg = next_message(); switch (invoke_message(msg, bhvr, mid)) { case im_success: if (mid == invalid_message_id) { reset_timeout(timeout_id); } return; case im_skipped: if (msg) { push_to_cache(std::move(msg)); } break; default: // delete msg break; } } }
void blocking_actor::dequeue(behavior& bhvr, message_id mid) { // try to dequeue from cache first if (invoke_from_cache(bhvr, mid)) { return; } // requesting an invalid timeout will reset our active timeout auto timeout_id = request_timeout(bhvr.timeout()); // read incoming messages for (;;) { await_data(); auto msg = next_message(); switch (invoke_message(msg, bhvr, mid)) { case im_success: reset_timeout(timeout_id); return; case im_skipped: if (msg) { push_to_cache(std::move(msg)); } break; default: // delete msg break; } } }
void resend_timeout () { retry_timer.cancel(); // No response, so resend the message again if( socket.is_open() ) send_packet(); else // if the socket gets closed, then, we've probably received an answer! request_timeout(); }
int setTimer(t_data *d) { int req_timeout; int food_out; req_timeout = request_timeout(d); food_out = get_food(d); if (req_timeout != -1 && req_timeout < food_out) return req_timeout; else if (food_out != 0) return food_out; else return -1; }
void handle_recv ( shared_dns_buffer_t inBuffer, const boost::system::error_code& ec, std::size_t bytes_transferred ) { if( !ec || ec == boost::asio::error::message_size ) { // only decode if we haven't decoded already! if( responseMessage.result() != dns::message::no_result ) { boost::mutex::scoped_lock lock(bufferMutex); // clamp the recvBuffer with the number of bytes transferred inBuffer.get()->length(bytes_transferred); // decode the buffer and say we've succeeded responseMessage.decode(*inBuffer.get()); } // consider the job done. request_timeout(); } }
inline int init_timeout(const util::duration& timeout) { // request timeout message request_timeout(timeout); return 0; }
void event_based_actor::do_become(behavior&& bhvr, bool discard_old) { reset_timeout(); request_timeout(bhvr.timeout()); if (discard_old) m_bhvr_stack.pop_async_back(); m_bhvr_stack.push_back(std::move(bhvr)); }
void event_based_actor::become_waiting_for(behavior&& bhvr, message_future mf) { CPPA_REQUIRE(bhvr.timeout().valid()); reset_timeout(); request_timeout(bhvr.timeout()); m_bhvr_stack.push_back(std::move(bhvr), mf); }