示例#1
0
文件: clientlet.cpp 项目: Jupige/rDSN
 task_ptr rpc::create_rpc_response_task(dsn_message_t request, clientlet* svc, empty_callback_t, int reply_hash)
 {
     task_ptr tsk = new safe_task_handle;
     //do not add_ref here
     auto t = dsn_rpc_create_response_task(
         request,
         nullptr,
         nullptr,
         reply_hash,
         svc ? svc->tracker() : nullptr
         );
     tsk->set_task_info(t);
     return tsk;
 }
        task_ptr call(
            const dsn_address_t& server,
            dsn_message_t request,
            servicelet* owner,
            rpc_reply_handler callback,
            int reply_hash
            )
        {
            task_ptr tsk = new safe_task<rpc_reply_handler >(callback);

            if (callback != nullptr)
                tsk->add_ref(); // released in exec_rpc_response

            auto t = dsn_rpc_create_response_task(
                request,
                callback != nullptr ? safe_task<rpc_reply_handler >::exec_rpc_response : nullptr,
                (void*)tsk,
                reply_hash
                );
            tsk->set_task_info(t);
            dsn_rpc_call(server, t, owner ? owner->tracker() : nullptr);

            return tsk;
        }
示例#3
0
DSN_PY_API dsn_task_t dsn_rpc_create_response_task_helper(dsn_message_t msg, uint64_t param, int reply_hash, dsn_task_tracker_t tracker)
{
	return dsn_rpc_create_response_task(msg, rpc_response_handler, (void *)param, reply_hash, nullptr); // set tracker null
}