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(); }
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(); }
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(); }
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(); }; }