Пример #1
0
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;
    }
  }
}
Пример #2
0
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;
    }
  }
}
Пример #3
0
        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();
        }
Пример #4
0
Файл: timer.c Проект: Ngob/Zappy
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;
}
Пример #5
0
        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();
          }
        }
Пример #6
0
 inline int init_timeout(const util::duration& timeout) {
     // request timeout message
     request_timeout(timeout);
     return 0;
 }
Пример #7
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));
}
Пример #8
0
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);
}