예제 #1
0
파일: task.cpp 프로젝트: am11/rDSN
rpc_response_task::rpc_response_task(
    message_ex* request, 
    dsn_rpc_response_handler_t cb,
    void* context, 
    dsn_task_cancelled_handler_t on_cancel,
    int hash, 
    service_node* node
    )
    : task(task_spec::get(request->local_rpc_code)->rpc_paired_code, context, on_cancel,
           hash == 0 ? static_cast<int>(request->header->client.hash) : hash, node)
{
    _cb = cb;
    _is_null = (_cb == nullptr);

    set_error_code(ERR_IO_PENDING);

    dbg_dassert (TASK_TYPE_RPC_RESPONSE == spec().type, 
        "%s is not of RPC_RESPONSE type, please use DEFINE_TASK_CODE_RPC to define the request task code",
        spec().name.c_str()
        );

    _request = request;
    _response = nullptr;

    _caller_pool = get_current_worker() ? 
        get_current_worker()->pool() : nullptr;

    _request->add_ref(); // released in dctor
}
예제 #2
0
파일: task.cpp 프로젝트: shengofsun/rDSN
rpc_response_task::rpc_response_task(message_ex *request,
                                     rpc_response_handler &&cb,
                                     int hash,
                                     service_node *node)
    : task(task_spec::get(request->local_rpc_code)->rpc_paired_code,
           hash == 0 ? request->header->client.thread_hash : hash,
           node),
      _cb(std::move(cb))
{
    _is_null = (_cb == nullptr);

    set_error_code(ERR_IO_PENDING);

    dbg_dassert(TASK_TYPE_RPC_RESPONSE == spec().type,
                "%s is not of RPC_RESPONSE type, please use DEFINE_TASK_CODE_RPC to define the "
                "request task code",
                spec().name.c_str());

    _request = request;
    _response = nullptr;

    _caller_pool = get_current_worker() ? get_current_worker()->pool() : nullptr;

    _request->add_ref(); // released in dctor
}
예제 #3
0
int hclib::current_worker() {
    return get_current_worker();
}
예제 #4
0
int shmem_my_worker() {
  return get_current_worker();
}