Exemplo n.º 1
0
bool sim_semaphore_provider::wait(int timeout_milliseconds)
{
    if (_count > 0)
    {
        --_count;
        scheduler::instance().wait_schedule(true, true);
        return true;
    }
    else if (0 == timeout_milliseconds)
    {
        scheduler::instance().wait_schedule(true, true);
        return false;
    }
    else
    {
        // wait success
        if (timeout_milliseconds == TIME_MS_MAX || dsn_probability() <= 0.5)
        {
            _wait_threads.push_back(scheduler::task_worker_ext::get(task::get_current_worker()));
            scheduler::instance().wait_schedule(true, false);
            return true;
        }

        // timeout
        else
        {
            scheduler::instance().wait_schedule(true, true);
            return false;
        }
    }
}
Exemplo n.º 2
0
 // return true means continue, otherwise early terminate with task::set_error_code
 static bool fault_on_rpc_reply(task* caller, message_ex* msg)
 {
     fj_opt& opt = s_fj_opts[msg->local_rpc_code];
     if (dsn_probability() < opt.rpc_response_drop_ratio)
     {
         ddebug("fault inject %s", __FUNCTION__);
         return false;
     }
     else
     {
         if (dsn_probability() < opt.rpc_response_data_corrupted_ratio)
         {
             ddebug("fault injector corrupt the rpc reply message from: %s, type: %s",
                    msg->header->from_address.to_string(), opt.rpc_message_data_corrupted_type.c_str());
             corrupt_data(msg, opt.rpc_message_data_corrupted_type);
         }
         return true;
     }
 }
Exemplo n.º 3
0
 // return true means continue, otherwise early terminate with task::set_error_code
 static bool fault_on_rpc_reply(task* caller, message_ex* msg)
 {
     fj_opt& opt = s_fj_opts[msg->local_rpc_code];
     if (dsn_probability() < opt.rpc_response_drop_ratio)
     {
         ddebug("fault inject %s", __FUNCTION__);
         return false;
     }
     else
     {
         return true;
     }
 }