Beispiel #1
0
bool wait_for(futres &futr_1,
              futres &futr_2,
              std::chrono::milliseconds &rel_time,
              pubnub_res &pbresult_1,
              pubnub_res &pbresult_2)
{
    auto const t0 = std::chrono::system_clock::now();
    auto t_current = std::chrono::system_clock::now();
    pubnub_res res_1 = PNR_STARTED;
    pubnub_res res_2 = PNR_STARTED;
    while ((t_current - t0) < rel_time) {
        if (res_1 == PNR_STARTED) {
            res_1 = futr_1.last_result();
        }
        if (res_2 == PNR_STARTED) {
            res_2 = futr_2.last_result();
        }
        if (((res_1 != PNR_STARTED) && (res_2 != PNR_STARTED))
            || pbpub_outof_quota(futr_1, res_1)
            || pbpub_outof_quota(futr_2, res_2)) {
            rel_time -= std::chrono::duration_cast<std::chrono::milliseconds>(t_current - t0);
            pbresult_1 = res_1;
            pbresult_2 = res_2;
            return true;
        }
        t_current = std::chrono::system_clock::now();
    }
    return false;
}
Beispiel #2
0
bool wait_for(futres &futr, std::chrono::milliseconds &rel_time, pubnub_res &pbresult)
{
    auto const t0 = std::chrono::system_clock::now();
    auto t_current = std::chrono::system_clock::now();
    while ((t_current - t0) < rel_time) {
        pbresult = futr.last_result();
        if (pbresult != PNR_STARTED) {
            rel_time -= std::chrono::duration_cast<std::chrono::milliseconds>(t_current - t0);
            return true;
        }
        t_current = std::chrono::system_clock::now();
    }
    return false;
}