Example #1
0
 public static void Close(ZmqMessage *message)
 {
     if (ZmqNative.msg_close(message) == -1)
     {
         ZmqUtil.ThrowLastError("Could not close ZMQ message");
     }
 }
Example #2
0
 public static void Init(ZmqMessage *message)
 {
     if (ZmqNative.msg_init(message) == -1)
     {
         ZmqUtil.ThrowLastError("Could not initialize ZMQ message");
     }
 }
Example #3
0
 public void Connect(string endpoint)
 {
     if (ZmqNative.connect(_handle, endpoint) == -1)
     {
         ZmqUtil.ThrowLastError($"Unable to connect ZMQ socket to {endpoint}");
     }
 }
Example #4
0
 public void Bind(string endpoint)
 {
     if (ZmqNative.bind(_handle, endpoint) == -1)
     {
         ZmqUtil.ThrowLastError($"Unable to bind ZMQ socket to {endpoint}");
     }
 }
Example #5
0
        public ZmqContext()
        {
            Handle = ZmqNative.ctx_new();

            if (Handle == IntPtr.Zero)
            {
                ZmqUtil.ThrowLastError("Could not create ZMQ context");
            }
        }
Example #6
0
        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");
            }
        }
Example #7
0
        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}");
            }
        }
Example #8
0
        public static void Init(ZmqMessage *message)
        {
            while (ZmqNative.msg_init(message) == -1)
            {
                if (ZmqUtil.WasInterrupted())
                {
                    continue;
                }

                ZmqUtil.ThrowLastError("Could not initialize ZMQ message");
            }
        }
Example #9
0
        public void Connect(string endpoint)
        {
            while (ZmqNative.connect(_handle, endpoint) == -1)
            {
                if (ZmqUtil.WasInterrupted())
                {
                    continue;
                }

                ZmqUtil.ThrowLastError($"Unable to connect ZMQ socket to {endpoint}");
            }
        }
Example #10
0
        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}");
                }
            }
        }
Example #11
0
        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;
        }
Example #12
0
        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));
        }
Example #13
0
        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;
        }