void OnEvent(PollEvent events) { if (Event != null) { Event(events); } }
/// <summary> /// Polls a File Descriptor for the passed in flags. /// </summary> /// <param name="fd">The descriptor to poll</param> /// <param name="events">The events to poll for</param> /// <param name="timeout">The amount of time to wait; -1 for infinite, 0 for immediate return, and a positive number is the number of milliseconds</param> /// <param name="triggered">The events that were returned by the poll call. May be PollEvents.POLLNONE in the case of a timeout.</param> /// <returns>An error or Error.SUCCESS.</returns> internal static unsafe Error Poll(SafeHandle fd, PollEvents events, int timeout, out PollEvents triggered) { bool gotRef = false; try { fd.DangerousAddRef(ref gotRef); var pollEvent = new PollEvent { FileDescriptor = fd.DangerousGetHandle().ToInt32(), Events = events, }; uint unused; Error err = Poll(&pollEvent, 1, timeout, &unused); triggered = pollEvent.TriggeredEvents; return(err); } finally { if (gotRef) { fd.DangerousRelease(); } } }
private static void OnPoll(Poll poll, Message msg = null, bool isUpdate = false, bool isAnswer = false) { PollEvent?.Invoke(new PollEventArgs() { poll = poll, msg = msg, isUpdate = isUpdate, isAnswer = isAnswer }); }
/// <summary> /// Polls a File Descriptor for the passed in flags. /// </summary> /// <param name="fd">The descriptor to poll</param> /// <param name="events">The events to poll for</param> /// <param name="timeout">The amount of time to wait; -1 for infinite, 0 for immediate return, and a positive number is the number of milliseconds</param> /// <param name="triggered">The events that were returned by the poll call. May be PollEvents.POLLNONE in the case of a timeout.</param> /// <returns>An error or Error.SUCCESS.</returns> internal static unsafe Error Poll(SafeFileHandle fd, PollEvents events, int timeout, out PollEvents triggered) { bool gotRef = false; try { fd.DangerousAddRef(ref gotRef); var pollEvent = new PollEvent { FileDescriptor = fd.DangerousGetHandle().ToInt32(), Events = events, }; uint unused; Error err = Poll(&pollEvent, 1, timeout, &unused); triggered = pollEvent.TriggeredEvents; return err; } finally { if (gotRef) { fd.DangerousRelease(); } } }
public void Start(PollEvent events, Action<PollEvent> callback) { Event += callback; int r = uv_poll_start(handle, (int)events, poll_cb); Ensure.Success(r, Loop); }
protected void OnChanged(PollEvent @event) { if (Changed != null) { Changed(@event); } }
public void Start(PollEvent events, Action <PollEvent> callback) { Event += callback; int r = uv_poll_start(handle, (int)events, poll_cb); Ensure.Success(r, Loop); }
//============================= public void Run(PollEvent poll_event) { if (poll_event != null) { poller = new ProgressPoller(this); poller.Start(poll_event); } // cancelPending = false; is_active = true; thread = new Thread(thread_process); thread.Start(); }
internal static unsafe extern Error Poll(PollEvent* pollEvents, uint eventCount, int timeout, uint* triggered);
public void Start(PollEvent events) { Invoke(uv_poll_start, (int)events, poll_cb); }
public static short ToShort(this PollEvent value) => (short)value;
public void Start(PollEvent events) { int r = uv_poll_start(NativeHandle, (int)events, poll_cb); Ensure.Success(r); }
public void Start(PollEvent events) { int r = uv_poll_start(NativeHandle, (int)events, poll_cb); Ensure.Success(r, Loop); }
public static unsafe void Poll(IntPtr[] reads, IntPtr[] writes, int timeout) { if (timeout == 0) { return; } PollEvent[] p; int num, n, num_read_total, num_write_total; num_read_total = num_write_total = 0; foreach (IntPtr fd in reads) { if ((int)fd != -1) { num_read_total++; } } foreach (IntPtr fd in writes) { if ((int)fd != -1) { num_write_total++; } } num = num_read_total + num_write_total; p = new PollEvent[num]; n = 0; foreach (IntPtr fd in reads) { if ((int)fd != -1) { p[n].FileDescriptor = (int)fd; p[n].Events = PollEvents.POLLIN | PollEvents.POLLPRI | PollEvents.POLLERR | PollEvents.POLLHUP; n++; } } foreach (IntPtr fd in writes) { if ((int)fd != -1) { p[n].FileDescriptor = (int)fd; p[n].Events = PollEvents.POLLIN | PollEvents.POLLPRI | PollEvents.POLLERR | PollEvents.POLLHUP | PollEvents.POLLOUT; n++; } } if (num == 0) { ThreadObj.Sleep(timeout); } else { //Dbg.WriteLine("Poll Begin."); int ret = Poll(p, timeout); //Dbg.WriteLine($"Poll end: ret = {ret}, reads = {reads.Length}, writes = {writes.Length}, pfds = {p.Length}"); //for (int i = 0; i < reads.Length; i++) Dbg.WriteLine($"reads[{i}] = {reads[i]}"); //for (int i = 0; i < writes.Length; i++) Dbg.WriteLine($"writes[{i}] = {writes[i]}"); } }
extern public static int uv_pipe_chmod(IntPtr handle, PollEvent flags);
private void OnEvent(PollEvent events) { Event?.Invoke(events); }