// // this gives you the task handle so you can wait or cancel // the task, with the cost of add/ref the task handle // public static SafeTaskHandle RpcCallAsync2( RpcAddress server, RpcWriteStream requestStream, Clientlet callbackOwner, RpcResponseHandler callback, int replyHash = 0 ) { Logging.dassert(requestStream.IsFlushed(), "RpcWriteStream must be flushed after write in the same thread"); var idx = GlobalInterOpLookupTable.Put(callback); var task = Native.dsn_rpc_create_response_task( requestStream.DangerousGetHandle(), _c_rpc_response_handler_holder, (IntPtr)idx, replyHash, callbackOwner?.tracker() ?? IntPtr.Zero ); var ret = new SafeTaskHandle(task, idx); Native.dsn_rpc_call(server.addr, task); return(ret); }
protected void Reply(RpcWriteStream response) { Logging.dassert(response.IsFlushed(), "RpcWriteStream must be flushed after write in the same thread"); Native.dsn_rpc_reply(response.DangerousGetHandle(), ErrorCode.ERR_OK); }
// no callback public static void RpcCallOneWay( RpcAddress server, RpcWriteStream requestStream ) { Logging.dassert(requestStream.IsFlushed(), "RpcWriteStream must be flushed after write in the same thread"); Native.dsn_rpc_call_one_way(server, requestStream.DangerousGetHandle()); }
public static RpcReadStream RpcCallSync( RpcAddress server, RpcWriteStream requestStream ) { Logging.dassert(requestStream.IsFlushed(), "RpcWriteStream must be flushed after write in the same thread"); var respMsg = Native.dsn_rpc_call_wait(server.addr, requestStream.DangerousGetHandle()); return(IntPtr.Zero == respMsg ? null : new RpcReadStream(respMsg, true)); }
public static void RpcCallAsync( RpcAddress server, RpcWriteStream requestStream, Servicelet callbackOwner, RpcResponseHandler callback, int replyHash = 0 ) { Logging.dassert(requestStream.IsFlushed(), "RpcWriteStream must be flushed after write in the same thread"); var idx = GlobalInterOpLookupTable.Put(callback); dsn_task_t task = Native.dsn_rpc_create_response_task( requestStream.DangerousGetHandle(), _c_rpc_response_handler_holder, (IntPtr)idx, replyHash ); Native.dsn_rpc_call(server, task, callbackOwner != null ? callbackOwner.tracker() : IntPtr.Zero); }
public static RpcReadStream RpcCallSync( RpcAddress server, RpcWriteStream requestStream ) { Logging.dassert(requestStream.IsFlushed(), "RpcWriteStream must be flushed after write in the same thread"); IntPtr respMsg = Native.dsn_rpc_call_wait(server, requestStream.DangerousGetHandle()); if (IntPtr.Zero == respMsg) { return null; } else { return new RpcReadStream(respMsg, true); } }
// // this gives you the task handle so you can wait or cancel // the task, with the cost of add/ref the task handle // public static SafeTaskHandle RpcCallAsync2( RpcAddress server, RpcWriteStream requestStream, Servicelet callbackOwner, RpcResponseHandler callback, int replyHash = 0 ) { Logging.dassert(requestStream.IsFlushed(), "RpcWriteStream must be flushed after write in the same thread"); var idx = GlobalInterOpLookupTable.Put(callback); dsn_task_t task = Native.dsn_rpc_create_response_task( requestStream.DangerousGetHandle(), _c_rpc_response_handler_holder, (IntPtr)idx, replyHash ); var ret = new SafeTaskHandle(task); Native.dsn_rpc_call(server, task, callbackOwner != null ? callbackOwner.tracker() : IntPtr.Zero); return ret; }
public static void RpcCallAsync( RpcAddress server, RpcWriteStream requestStream, Clientlet callbackOwner, RpcResponseHandler callback, int replyHash = 0 ) { Logging.dassert(requestStream.IsFlushed(), "RpcWriteStream must be flushed after write in the same thread"); var idx = GlobalInterOpLookupTable.Put(callback); var task = Native.dsn_rpc_create_response_task( requestStream.DangerousGetHandle(), _c_rpc_response_handler_holder, (IntPtr)idx, replyHash, callbackOwner?.tracker() ?? IntPtr.Zero ); Native.dsn_rpc_call(server.addr, task); }