public bool Poll(int microSeconds, System.Net.Sockets.SelectMode mode) { if (_isClosed) { throw new ObjectDisposedException("Socket has been closed"); } zts_pollfd poll_set = new zts_pollfd(); poll_set.fd = _fd; if (mode == SelectMode.SelectRead) { poll_set.events = (short)((byte)ZeroTier.Constants.POLLIN); } if (mode == SelectMode.SelectWrite) { poll_set.events = (short)((byte)ZeroTier.Constants.POLLOUT); } if (mode == SelectMode.SelectError) { poll_set.events = (short)((byte)ZeroTier.Constants.POLLERR | (byte)ZeroTier.Constants.POLLNVAL); } IntPtr poll_fd_ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(zts_pollfd))); Marshal.StructureToPtr(poll_set, poll_fd_ptr, false); int result = 0; int timeout_ms = (microSeconds / 1000); uint numfds = 1; if ((result = zts_bsd_poll(poll_fd_ptr, numfds, timeout_ms)) < 0) { throw new SocketException(result, Node.ErrNo); } poll_set = (zts_pollfd)Marshal.PtrToStructure(poll_fd_ptr, typeof(zts_pollfd)); if (result != 0) { if (mode == SelectMode.SelectRead) { result = Convert.ToInt32(((byte)poll_set.revents & (byte)ZeroTier.Constants.POLLIN) != 0); } if (mode == SelectMode.SelectWrite) { result = Convert.ToInt32(((byte)poll_set.revents & (byte)ZeroTier.Constants.POLLOUT) != 0); } if (mode == SelectMode.SelectError) { result = Convert.ToInt32( ((poll_set.revents & (byte)ZeroTier.Constants.POLLERR) != 0) || ((poll_set.revents & (byte)ZeroTier.Constants.POLLNVAL) != 0)); } } Marshal.FreeHGlobal(poll_fd_ptr); return(result > 0); }
public bool Poll(int microSeconds, System.Net.Sockets.SelectMode mode) { #if SECURE_BLACKBOX_DEBUG LowLevelDump("ElSSLSocket.Poll() {}"); #endif if (receivedDataBuf != null) { return(true); } else { return(transport.Poll(microSeconds, mode)); } }
public bool SafePoll(int timeout, ns.SelectMode sm) { lock (this) { bool res = false; try { res = !disposed && Poll(timeout, sm); } catch (Exception e) { Console.WriteLine(e); res = !disposed && sm == ns.SelectMode.SelectError; } return(res); } }
public bool SafePoll(int timeout, ns.SelectMode sm) { bool res = false; try { if (!disposed) { res = realSocket.Poll(timeout, sm); } } catch (ns.SocketException e) { ROS.Error()($"[{ThisNode.Name}] {e.ToString()}"); res = !disposed && sm == ns.SelectMode.SelectError; } return(res); }
public bool SafePoll(int timeout, ns.SelectMode sm) { bool res = false; try { if (!disposed) { res = realsocket.Poll(timeout, sm); } } catch (ns.SocketException e) { EDB.WriteLine(e); res = !disposed && sm == ns.SelectMode.SelectError; } return(res); }
public bool SafePoll(int timeout, ns.SelectMode sm) { if (disposed) { return(false); } bool res = false; try { res = Poll(timeout, sm); } catch (Exception e) { Console.WriteLine(e); res = sm == ns.SelectMode.SelectError; } return(res); }
bool Utils.Wrappers.Interfaces.ISocket.Poll(int microSeconds, System.Net.Sockets.SelectMode mode) { return(InternalSocket.Poll(microSeconds, mode)); }