public static void Write(this Stream ws, TaskCode val) { using (var writer = new BinaryWriter(ws)) { writer.Write(val); } }
public static void Read(this Stream rs, out TaskCode val) { using (var reader = new BinaryReader(rs)) { val = new TaskCode(reader.ReadInt32()); } }
protected bool RegisterRpcHandler(TaskCode code, string name, RpcRequestHandler handler, UInt64 gpid) { dsn_rpc_request_handler_t cb = (req, param) => { // if handler synchnously processes the incoming request // we don't need to add_ref and set owner to true // in folloiwng two stmts // however, we don't know so we do as follows Native.dsn_msg_add_ref(req); // released by RpcReadStream var rms = new RpcReadStream(req, true); var wms = new RpcWriteStream(Native.dsn_msg_create_response(req)); handler(rms, wms); }; bool r = Native.dsn_rpc_register_handler(code, name, cb, IntPtr.Zero, gpid); Logging.dassert(r, "rpc handler registration failed for " + code.ToString()); lock (_handlers) { _handlers.Add(code, cb); } return(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 CallAsync2( TaskCode evt, Servicelet callbackOwner, task_handler callback, int hash = 0, int delay_milliseconds = 0, int timer_interval_milliseconds = 0 ) { int idx = GlobalInterOpLookupTable.Put(callback); IntPtr task; if (timer_interval_milliseconds == 0) { task = Native.dsn_task_create(evt, _c_task_handler_holder, (IntPtr)idx, hash); } else { task = Native.dsn_task_create_timer(evt, _c_task_handler_holder, (IntPtr)idx, hash, timer_interval_milliseconds); } var ret = new SafeTaskHandle(task); Native.dsn_task_call(task, callbackOwner != null ? callbackOwner.tracker() : IntPtr.Zero, delay_milliseconds); return(ret); }
public RpcWriteStream(TaskCode code, int timeoutMilliseconds, int thread_hash, ulong partition_hash) : base(Native.dsn_msg_create_request(code, timeoutMilliseconds, thread_hash, partition_hash), false, false) { _currentWriteOffset = 0; _currentBufferLength = IntPtr.Zero; _length = 0; }
protected bool UnregisterRpcHandler(TaskCode code, UInt64 gpid) { Native.dsn_rpc_unregiser_handler(code, gpid); bool r; lock (_handlers) { r = _handlers.Remove(code); } return(r); }
public static void CallAsync( TaskCode evt, Clientlet callbackOwner, task_handler callback, int hash = 0, int delay_milliseconds = 0 ) { var idx = GlobalInterOpLookupTable.Put(callback); var task = Native.dsn_task_create(evt, _c_task_handler_holder, (IntPtr)idx, hash, callbackOwner?.tracker() ?? IntPtr.Zero); Native.dsn_task_call(task, delay_milliseconds); }
public static dsn_task_t CopyRemoteDirectory( dsn_address_t remote, string source_dir, string dest_dir, bool overwrite, TaskCode callbackCode, Servicelet callbackOwner, AioHandler callback, int hash = 0 ) { int idx = GlobalInterOpLookupTable.Put(callback); dsn_task_t task = Native.dsn_file_create_aio_task(callbackCode, _c_aio_handler_holder, (IntPtr)idx, hash); Native.dsn_file_copy_remote_directory(remote, source_dir, dest_dir, overwrite, task, callbackOwner != null ? callbackOwner.tracker() : IntPtr.Zero); return(task); }
public static dsn_task_t FileWrite( dsn_handle_t hFile, byte[] buffer, int count, UInt64 offset, TaskCode callbackCode, Servicelet callbackOwner, AioHandler callback, int hash = 0 ) { int idx = GlobalInterOpLookupTable.Put(callback); dsn_task_t task = Native.dsn_file_create_aio_task(callbackCode, _c_aio_handler_holder, (IntPtr)idx, hash); Native.dsn_file_write(hFile, buffer, count, offset, task, callbackOwner != null ? callbackOwner.tracker() : IntPtr.Zero); return(task); }
public static SafeTaskHandle CopyRemoteDirectory( ulong remote, string source_dir, string dest_dir, bool overwrite, TaskCode callbackCode, Clientlet callbackOwner, AioHandler callback, int hash = 0 ) { var idx = GlobalInterOpLookupTable.Put(callback); var task = Native.dsn_file_create_aio_task(callbackCode, _c_aio_handler_holder, (IntPtr)idx, hash, callbackOwner?.tracker() ?? IntPtr.Zero); Native.dsn_file_copy_remote_directory(remote, source_dir, dest_dir, overwrite, task); return(new SafeTaskHandle(task, idx)); }
public static SafeTaskHandle FileWrite( dsn_handle_t hFile, byte[] buffer, int count, ulong offset, TaskCode callbackCode, Clientlet callbackOwner, AioHandler callback, int hash = 0 ) { var idx = GlobalInterOpLookupTable.Put(callback); var task = Native.dsn_file_create_aio_task(callbackCode, _c_aio_handler_holder, (IntPtr)idx, hash, callbackOwner?.tracker() ?? IntPtr.Zero); Native.dsn_file_write(hFile, buffer, count, offset, task); return(new SafeTaskHandle(task, idx)); }
protected bool RegisterRpcHandler(TaskCode code, string name, RpcRequestHandlerOneWay handler, UInt64 gpid) { dsn_rpc_request_handler_t cb = (req, param) => { var rms = new RpcReadStream(req, false); handler(rms); }; bool r = Native.dsn_rpc_register_handler(code, name, cb, IntPtr.Zero, gpid); Logging.dassert(r, "rpc handler registration failed for " + code.ToString()); lock (_handlers) { _handlers.Add(code, cb); } return(r); }
// // 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 CallAsync2( TaskCode evt, Clientlet callbackOwner, task_handler callback, int hash = 0, int delay_milliseconds = 0, int timer_interval_milliseconds = 0 ) { var idx = GlobalInterOpLookupTable.Put(callback); var task = timer_interval_milliseconds == 0 ? Native.dsn_task_create(evt, _c_task_handler_holder, (IntPtr)idx, hash, callbackOwner?.tracker() ?? IntPtr.Zero) : Native.dsn_task_create_timer(evt, _c_timer_task_handler_holder, (IntPtr)idx, hash, timer_interval_milliseconds, callbackOwner?.tracker() ?? IntPtr.Zero); var ret = new SafeTaskHandle(task, idx); Native.dsn_task_call(task, delay_milliseconds); return(ret); }
public static void CallAsync( TaskCode evt, Servicelet callbackOwner, task_handler callback, int hash = 0, int delay_milliseconds = 0, int timer_interval_milliseconds = 0 ) { int idx = GlobalInterOpLookupTable.Put(callback); IntPtr task; if (timer_interval_milliseconds == 0) task = Native.dsn_task_create(evt, _c_task_handler_holder, (IntPtr)idx, hash); else task = Native.dsn_task_create_timer(evt, _c_task_handler_holder, (IntPtr)idx, hash, timer_interval_milliseconds); Native.dsn_task_call(task, callbackOwner != null ? callbackOwner.tracker() : IntPtr.Zero, delay_milliseconds); }
protected bool RegisterRpcHandler(TaskCode code, string name, RpcRequestHandler handler) { dsn_rpc_request_handler_t cb = (dsn_message_t req, IntPtr param) => { RpcReadStream rms = new RpcReadStream(req, false); RpcWriteStream wms = new RpcWriteStream(Native.dsn_msg_create_response(req), false); handler(rms, wms); }; bool r = Native.dsn_rpc_register_handler(code, name, cb, IntPtr.Zero); Logging.dassert(r, "rpc handler registration failed for " + code.ToString()); lock (_handlers) { _handlers.Add(code, cb); } return(true); }
public static void InitCodes() { RPC_ECHO_ECHO_PING = new TaskCode("RPC_ECHO_ECHO_PING", dsn_task_type_t.TASK_TYPE_RPC_REQUEST, dsn_task_priority_t.TASK_PRIORITY_COMMON, ThreadPoolCode.THREAD_POOL_DEFAULT); LPC_ECHO_TEST_TIMER = new TaskCode("LPC_ECHO_TEST_TIMER", dsn_task_type_t.TASK_TYPE_COMPUTE, dsn_task_priority_t.TASK_PRIORITY_COMMON, ThreadPoolCode.THREAD_POOL_DEFAULT); }
public TaskCode(TaskCode c) { _code = c._code; }
public static dsn_task_t CopyRemoteDirectory( dsn_address_t remote, string source_dir, string dest_dir, bool overwrite, TaskCode callbackCode, Servicelet callbackOwner, AioHandler callback, int hash = 0 ) { int idx = GlobalInterOpLookupTable.Put(callback); dsn_task_t task = Native.dsn_file_create_aio_task(callbackCode, _c_aio_handler_holder, (IntPtr)idx, hash); Native.dsn_file_copy_remote_directory(remote, source_dir, dest_dir, overwrite, task, callbackOwner != null ? callbackOwner.tracker() : IntPtr.Zero); return task; }
public static dsn_task_t FileWrite( dsn_handle_t hFile, byte[] buffer, int count, UInt64 offset, TaskCode callbackCode, Servicelet callbackOwner, AioHandler callback, int hash = 0 ) { int idx = GlobalInterOpLookupTable.Put(callback); dsn_task_t task = Native.dsn_file_create_aio_task(callbackCode, _c_aio_handler_holder, (IntPtr)idx, hash); Native.dsn_file_write(hFile, buffer, count, offset, task, callbackOwner != null ? callbackOwner.tracker() : IntPtr.Zero); return task; }
public static SafeTaskHandle FileWrite( dsn_handle_t hFile, byte[] buffer, int count, ulong offset, TaskCode callbackCode, Clientlet callbackOwner, AioHandler callback, int hash = 0 ) { var idx = GlobalInterOpLookupTable.Put(callback); var task = Native.dsn_file_create_aio_task(callbackCode, _c_aio_handler_holder, (IntPtr)idx, hash, callbackOwner?.tracker() ?? IntPtr.Zero); Native.dsn_file_write(hFile, buffer, count, offset, task); return new SafeTaskHandle(task, idx); }
public static SafeTaskHandle CopyRemoteFiles( dsn_address_t remote, string source_dir, string[] files, string dest_dir, bool overwrite, TaskCode callbackCode, Clientlet callbackOwner, AioHandler callback, int hash = 0 ) { int idx = GlobalInterOpLookupTable.Put(callback); dsn_task_t task = Native.dsn_file_create_aio_task(callbackCode, _c_aio_handler_holder, (IntPtr)idx, hash, callbackOwner != null ? callbackOwner.tracker() : IntPtr.Zero); Native.dsn_file_copy_remote_files(remote, source_dir, files, dest_dir, overwrite, task); return new SafeTaskHandle(task, idx); }
public RpcWriteStream(TaskCode code, int timeoutMilliseconds, ulong hash) : base(Native.dsn_msg_create_request(code, timeoutMilliseconds, hash), false, false) { _currentWriteOffset = 0; _currentBufferLength = IntPtr.Zero; _length = 0; }
public static SafeTaskHandle FileRead( dsn_handle_t hFile, byte[] buffer, int count, UInt64 offset, TaskCode callbackCode, Clientlet callbackOwner, AioHandler callback, int hash = 0 ) { int idx = GlobalInterOpLookupTable.Put(callback); dsn_task_t task = Native.dsn_file_create_aio_task(callbackCode, _c_aio_handler_holder, (IntPtr)idx, hash, callbackOwner != null ? callbackOwner.tracker() : IntPtr.Zero); Native.dsn_file_read(hFile, buffer, count, offset, task); return new SafeTaskHandle(task, idx); }
public static SafeTaskHandle CopyRemoteDirectory( ulong remote, string source_dir, string dest_dir, bool overwrite, TaskCode callbackCode, Clientlet callbackOwner, AioHandler callback, int hash = 0 ) { var idx = GlobalInterOpLookupTable.Put(callback); var task = Native.dsn_file_create_aio_task(callbackCode, _c_aio_handler_holder, (IntPtr)idx, hash, callbackOwner?.tracker() ?? IntPtr.Zero); Native.dsn_file_copy_remote_directory(remote, source_dir, dest_dir, overwrite, task); return new SafeTaskHandle(task, idx); }
// // 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 CallAsync2( TaskCode evt, Clientlet callbackOwner, task_handler callback, int hash = 0, int delay_milliseconds = 0, int timer_interval_milliseconds = 0 ) { var idx = GlobalInterOpLookupTable.Put(callback); var task = timer_interval_milliseconds == 0 ? Native.dsn_task_create(evt, _c_task_handler_holder, (IntPtr)idx, hash, callbackOwner?.tracker() ?? IntPtr.Zero) : Native.dsn_task_create_timer(evt, _c_timer_task_handler_holder, (IntPtr)idx, hash, timer_interval_milliseconds, callbackOwner?.tracker() ?? IntPtr.Zero); var ret = new SafeTaskHandle(task, idx); Native.dsn_task_call(task, delay_milliseconds); return ret; }