public KestrelThread(KestrelEngine engine) { _engine = engine; _loop = new UvLoopHandle(); _post = new UvAsyncHandle(); _thread = new Thread(ThreadStart); QueueCloseHandle = PostCloseHandle; }
unsafe public MockLibuv() { _uv_write = UvWrite; _uv_async_send = postHandle => { _loopWh.Set(); return 0; }; _uv_async_init = (loop, postHandle, callback) => { _postHandle = postHandle; _onPost = callback; return 0; }; _uv_run = (loopHandle, mode) => { while (!_stopLoop) { _loopWh.Wait(); _loopWh.Reset(); _onPost(_postHandle.InternalGetHandle()); } return 0; }; _uv_ref = handle => { }; _uv_unref = handle => { _stopLoop = true; _loopWh.Set(); }; _uv_stop = handle => { _stopLoop = true; _loopWh.Set(); }; _uv_req_size = reqType => IntPtr.Size; _uv_loop_size = () => IntPtr.Size; _uv_handle_size = handleType => IntPtr.Size; _uv_loop_init = loop => 0; _uv_tcp_init = (loopHandle, tcpHandle) => 0; _uv_close = (handle, callback) => callback(handle); _uv_loop_close = handle => 0; _uv_walk = (loop, callback, ignore) => 0; }
public KestrelThread(KestrelEngine engine) { _engine = engine; _appLifetime = engine.AppLifetime; _log = engine.Log; _threadPool = engine.ThreadPool; _loop = new UvLoopHandle(_log); _post = new UvAsyncHandle(_log); _thread = new Thread(ThreadStart); _thread.Name = "KestrelThread - libuv"; QueueCloseHandle = PostCloseHandle; }
public async Task AsyncCanBeSent() { var loop = new UvLoopHandle(); loop.Init(_uv); var trigger = new UvAsyncHandle(); var called = false; trigger.Init(loop, () => { called = true; trigger.Dispose(); }); trigger.Send(); loop.Run(); loop.Dispose(); Assert.True(called); }
public void async_send(UvAsyncHandle handle) { Check(_uv_async_send(handle)); }
public void async_init(UvLoopHandle loop, UvAsyncHandle handle, uv_async_cb cb) { loop.Validate(); handle.Validate(); Check(_uv_async_init(loop, handle, cb)); }
public extern static int uv_async_send(UvAsyncHandle handle);
public static extern int uv_async_init(UvLoopHandle loop,UvAsyncHandle handle,uv_async_cb cb);
public static extern int uv_async_init(UvLoopHandle loop, UvAsyncHandle handle, uv_async_cb cb);