public static void Close(ZmqMessage *message) { if (ZmqNative.msg_close(message) == -1) { ZmqUtil.ThrowLastError("Could not close ZMQ message"); } }
public static void Init(ZmqMessage *message) { if (ZmqNative.msg_init(message) == -1) { ZmqUtil.ThrowLastError("Could not initialize ZMQ message"); } }
public void Connect(string endpoint) { if (ZmqNative.connect(_handle, endpoint) == -1) { ZmqUtil.ThrowLastError($"Unable to connect ZMQ socket to {endpoint}"); } }
public void Bind(string endpoint) { if (ZmqNative.bind(_handle, endpoint) == -1) { ZmqUtil.ThrowLastError($"Unable to bind ZMQ socket to {endpoint}"); } }
public ZmqContext() { Handle = ZmqNative.ctx_new(); if (Handle == IntPtr.Zero) { ZmqUtil.ThrowLastError("Could not create ZMQ context"); } }
public ZmqSocket(ZmqContext context, ZmqSocketType type) { _context = context; _handle = ZmqNative.socket(_context.Handle, (int)type); if (_handle == IntPtr.Zero) { ZmqUtil.ThrowLastError($"Could not create ZMQ {type} socket"); } }
public void SetOption(ZmqSocketOption option, int value) { while (ZmqNative.setsockopt(_handle, (int)option, &value, (IntPtr)sizeof(int)) == -1) { if (ZmqUtil.WasInterrupted()) { continue; } ZmqUtil.ThrowLastError($"Unable to set ZMQ socket option {option} to {value}"); } }
public static void Init(ZmqMessage *message) { while (ZmqNative.msg_init(message) == -1) { if (ZmqUtil.WasInterrupted()) { continue; } ZmqUtil.ThrowLastError("Could not initialize ZMQ message"); } }
public void Connect(string endpoint) { while (ZmqNative.connect(_handle, endpoint) == -1) { if (ZmqUtil.WasInterrupted()) { continue; } ZmqUtil.ThrowLastError($"Unable to connect ZMQ socket to {endpoint}"); } }
public void SetOption(ZmqSocketOption option, byte[] value) { fixed(byte *valuePtr = value) { while (ZmqNative.setsockopt(_handle, (int)option, valuePtr, (IntPtr)(value?.Length ?? 0)) == -1) { if (ZmqUtil.WasInterrupted()) { continue; } ZmqUtil.ThrowLastError($"Unable to set ZMQ socket option {option}"); } } }
private void Close(bool canThrow) { if (_handle == IntPtr.Zero) { return; } if (ZmqNative.close(_handle) == -1) { if (canThrow) { ZmqUtil.ThrowLastError("Could not close ZMQ socket"); } } _handle = IntPtr.Zero; }
public string GetOptionString(ZmqSocketOption option) { const int bufSize = 256; var buf = stackalloc byte[bufSize]; var size = (IntPtr)bufSize; while (ZmqNative.getsockopt(_handle, (int)option, buf, &size) == -1) { if (ZmqUtil.WasInterrupted()) { continue; } ZmqUtil.ThrowLastError($"Unable to get ZMQ socket option {option}"); } if ((long)size <= 1) { return(string.Empty); } return(Marshal.PtrToStringAnsi((IntPtr)buf, (int)size - 1)); }
private void Terminate(bool canThrow) { if (Handle == IntPtr.Zero) { return; } while (ZmqNative.ctx_term(Handle) == -1) { if (ZmqUtil.WasInterrupted()) { continue; } if (canThrow) { ZmqUtil.ThrowLastError("Could not terminate ZMQ context"); } break; } Handle = IntPtr.Zero; }