Example #1
0
        public void ConnectFor(TransportMessage message)
        {
            if (!CanSendOrConnect(message))
            {
                return;
            }

            try
            {
                _socket = _context.CreateSocket(SocketType.PUSH);
                _socket.SendHighWatermark = _options.SendHighWaterMark;
                _socket.TcpKeepalive      = TcpKeepaliveBehaviour.Enable;
                _socket.TcpKeepaliveIdle  = 30;
                _socket.TcpKeepaliveIntvl = 3;
                _socket.SetPeerId(PeerId);

                _socket.Connect(EndPoint);

                IsConnected = true;

                _logger.InfoFormat("Socket connected, Peer: {0}, EndPoint: {1}", PeerId, EndPoint);
            }
            catch (Exception ex)
            {
                _socket.Dispose();
                _socket     = null;
                IsConnected = false;

                _logger.ErrorFormat("Unable to connect socket, Peer: {0}, EndPoint: {1}, Exception: {2}", PeerId, EndPoint, ex);
                _errorHandler.OnConnectException(PeerId, EndPoint, ex);

                SwitchToClosedState(_options.ClosedStateDurationAfterConnectFailure);
            }
        }
Example #2
0
        public void ConnectFor(TransportMessage message)
        {
            if (!CanSendOrConnect(message))
            {
                return;
            }

            try
            {
                _socket = CreateSocket();
                _socket.Connect(EndPoint);

                IsConnected = true;

                _logger.InfoFormat("Socket connected, Peer: {0}, EndPoint: {1}", PeerId, EndPoint);
            }
            catch (Exception ex)
            {
                _socket?.Dispose();
                _socket     = null;
                IsConnected = false;

                _logger.ErrorFormat("Unable to connect socket, Peer: {0}, EndPoint: {1}, Exception: {2}", PeerId, EndPoint, ex);
                _errorHandler.OnConnectException(PeerId, EndPoint, ex);

                SwitchToClosedState(_options.ClosedStateDurationAfterConnectFailure);
            }
        }
Example #3
0
        public void ConnectFor(TransportMessage message)
        {
            if (!CanSendOrConnect(message))
            {
                return;
            }

            try
            {
                _socket = new ZmqSocket(_context, ZmqSocketType.PUSH);
                _socket.SetOption(ZmqSocketOption.SNDHWM, _options.SendHighWaterMark);
                _socket.SetOption(ZmqSocketOption.SNDTIMEO, (int)_options.SendTimeout.TotalMilliseconds);
                _socket.SetOption(ZmqSocketOption.TCP_KEEPALIVE, 1);
                _socket.SetOption(ZmqSocketOption.TCP_KEEPALIVE_IDLE, 30);
                _socket.SetOption(ZmqSocketOption.TCP_KEEPALIVE_INTVL, 3);
                _socket.SetOption(ZmqSocketOption.ROUTING_ID, Encoding.ASCII.GetBytes(PeerId.ToString()));

                _socket.Connect(EndPoint);

                IsConnected = true;

                _logger.InfoFormat("Socket connected, Peer: {0}, EndPoint: {1}", PeerId, EndPoint);
            }
            catch (Exception ex)
            {
                _socket.Dispose();
                _socket     = null;
                IsConnected = false;

                _logger.ErrorFormat("Unable to connect socket, Peer: {0}, EndPoint: {1}, Exception: {2}", PeerId, EndPoint, ex);
                _errorHandler.OnConnectException(PeerId, EndPoint, ex);

                SwitchToClosedState(_options.ClosedStateDurationAfterConnectFailure);
            }
        }