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 }
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 }
int hclib::current_worker() { return get_current_worker(); }
int shmem_my_worker() { return get_current_worker(); }