Example #1
0
        private void ConnectToMaster(VNodeInfo master)
        {
            Debug.Assert(_state == VNodeState.PreReplica);

            var masterEndPoint = GetMasterEndPoint(master, _useSsl);

            if (_connection != null)
            {
                _connection.Stop(string.Format("Reconnecting from old master [{0}] to new master: [{1}].",
                                               _connection.RemoteEndPoint, masterEndPoint));
            }

            _connection = new TcpConnectionManager(_useSsl ? "master-secure" : "master-normal",
                                                   Guid.NewGuid(),
                                                   _tcpDispatcher,
                                                   _publisher,
                                                   masterEndPoint,
                                                   _connector,
                                                   _useSsl,
                                                   _sslTargetHost,
                                                   _sslValidateServer,
                                                   _networkSendQueue,
                                                   _authProvider,
                                                   _heartbeatInterval,
                                                   _heartbeatTimeout,
                                                   OnConnectionEstablished,
                                                   OnConnectionClosed);
            _connection.StartReceiving();
        }
Example #2
0
        static void ConnectAsClient()
        {
            int count = 0;

            var server     = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 3666);
            var connection = new TcpConnectionManager("ClientConnection", Guid.NewGuid(),
                                                      server,
                                                      new TcpClientConnector(),
                                                      false,
                                                      null,
                                                      false,
                                                      new EchoFramer(),
                                                      (c, d) =>
            {
                var message = UTF8NoBom.GetString(d);
                Console.WriteLine("Client: message from server: {0}", message);

                var messageCount = Interlocked.Increment(ref count);
                c.Send(UTF8NoBom.GetBytes(string.Format("client says: {0} message received.", messageCount)));

                if (messageCount == 50)
                {
                    c.Close();
                }
            },
                                                      (c) => {
                Console.WriteLine("Client: connected.");
                c.Send(UTF8NoBom.GetBytes("Hello server."));
            },
                                                      (c, e) => {
                Console.WriteLine("Client: connection lost.");
            });

            connection.StartReceiving();
        }
Example #3
0
        private void ConnectToLeader(MemberInfo leader)
        {
            Debug.Assert(_state == VNodeState.PreReplica || _state == VNodeState.PreReadOnlyReplica);

            var leaderEndPoint = GetLeaderEndPoint(leader, _useSsl);

            if (leaderEndPoint == null)
            {
                Log.Error("No valid endpoint found to connect to the Leader. Aborting connection operation to Leader.");
                return;
            }

            if (_connection != null)
            {
                _connection.Stop(string.Format("Reconnecting from old leader [{0}] to new leader: [{1}].",
                                               _connection.RemoteEndPoint, leaderEndPoint));
            }

            _connection = new TcpConnectionManager(_useSsl ? "leader-secure" : "leader-normal",
                                                   Guid.NewGuid(),
                                                   _tcpDispatcher,
                                                   _publisher,
                                                   leaderEndPoint.GetHost(),
                                                   leaderEndPoint,
                                                   _connector,
                                                   _useSsl,
                                                   _sslServerCertValidator,
                                                   () => {
                var cert = _sslClientCertificateSelector();
                return(new X509CertificateCollection {
                    cert
                });
            },
                                                   _networkSendQueue,
                                                   _authProvider,
                                                   _authorizationGateway,
                                                   _heartbeatInterval,
                                                   _heartbeatTimeout,
                                                   OnConnectionEstablished,
                                                   OnConnectionClosed);
            _connection.StartReceiving();
        }
Example #4
0
        private void Connect()
        {
            // TODO: implement some kind of master discovery
            var endPoint = new IPEndPoint(IPAddress.Parse(_ip), _port);

            var clientConnector = new TcpClientConnector();

            _connectionManager = new TcpConnectionManager(
                "projection",
                new ClientTcpDispatcher(),
                _bus,
                endPoint,
                clientConnector);

            _connectionManager.ConnectionEstablished += manager =>
            {
                Console.WriteLine("Connection established: " + manager.EndPoint);
                _bus.Publish(new ProjectionMessage.CoreService.Start());
                _bus.Publish(new ProjectionMessage.CoreService.Connected(connection: manager));
                _connectionManager.ConnectionClosed += OnConnectionClosed;
                _connectionManager.StartReceiving();
            };
        }