Ejemplo n.º 1
0
bool AsioSession::processSleepEvents() {
  if (m_sleepEventQueue.empty()) {
    return false;
  }

  bool woken = false;
  auto now = TimePoint::clock::now();

  while (!m_sleepEventQueue.empty()) {
    auto wh = m_sleepEventQueue.top();

    if (wh->getWakeTime() > now) {
      break;
    }
    woken = true;

    wh->process();
    decRefObj(wh);
    m_sleepEventQueue.pop();
  }

  return woken;
}
Ejemplo n.º 2
0
bool AsioSession::processSleepEvents() {
    if (m_sleepEvents.empty()) {
        return false;
    }

    bool woken = false;
    auto now = TimePoint::clock::now();

    while (!m_sleepEvents.empty()) {
        auto wh = m_sleepEvents.front();
        if (wh->getWakeTime() > now) {
            break;
        }
        if (wh->process()) {
            woken = true;
        }
        decRefObj(wh);
        std::pop_heap(m_sleepEvents.begin(), m_sleepEvents.end(), sleep_compare);
        m_sleepEvents.pop_back();
    }

    return woken;
}