public int GetSocketOption(int option, out ulong value) { using (var optionLength = new DisposableIntPtr(IntPtr.Size)) using (var optionValue = new DisposableIntPtr(Marshal.SizeOf(typeof(ulong)))) { Marshal.WriteInt32(optionLength, sizeof(ulong)); int rc = RetryIfInterrupted(() => LibZmq.zmq_getsockopt(SocketHandle, option, optionValue, optionLength)); value = unchecked (Convert.ToUInt64(Marshal.ReadInt64(optionValue))); return(rc); } }
public int GetSocketOption(int option, out byte[] value) { using (var optionLength = new DisposableIntPtr(IntPtr.Size)) using (var optionValue = new DisposableIntPtr(MaxBinaryOptionSize)) { Marshal.WriteInt32(optionLength, MaxBinaryOptionSize); int rc = RetryIfInterrupted(() => LibZmq.zmq_getsockopt(SocketHandle, option, optionValue, optionLength)); value = new byte[Marshal.ReadInt32(optionLength)]; Marshal.Copy(optionValue, value, 0, value.Length); return(rc); } }