private async Task <ClusterMaintenanceConnection> ConnectToClientNodeAsync(TcpConnectionInfo tcpConnectionInfo, TimeSpan timeout) { TcpConnectionHeaderMessage.SupportedFeatures supportedFeatures; var tcpClient = await TcpUtils.ConnectSocketAsync(tcpConnectionInfo, timeout, _log); var connection = await TcpUtils.WrapStreamWithSslAsync(tcpClient, tcpConnectionInfo, _parent._server.Server.Certificate.Certificate, timeout); using (_contextPool.AllocateOperationContext(out JsonOperationContext ctx)) using (var writer = new BlittableJsonTextWriter(ctx, connection)) { var paramaters = new TcpNegotiateParamaters { Database = null, Operation = TcpConnectionHeaderMessage.OperationTypes.Heartbeats, Version = TcpConnectionHeaderMessage.HeartbeatsTcpVersion, ReadResponseAndGetVersionAsync = SupervisorReadResponseAndGetVersionAsync, Url = tcpConnectionInfo.Url }; supportedFeatures = await TcpNegotiation.NegotiateProtocolVersionAsync(ctx, connection, paramaters).ConfigureAwait(false); WriteClusterMaintenanceConnectionHeader(writer); } return(new ClusterMaintenanceConnection { TcpClient = tcpClient, Stream = connection, SupportedFeatures = supportedFeatures }); }
private async Task <ClusterMaintenanceConnection> ConnectToClientNodeAsync(TcpConnectionInfo tcpConnectionInfo, TimeSpan timeout) { TcpConnectionHeaderMessage.SupportedFeatures supportedFeatures; TcpClient tcpClient; string url; (tcpClient, url) = await TcpUtils.ConnectSocketAsync(tcpConnectionInfo, timeout, _log); var connection = await TcpUtils.WrapStreamWithSslAsync(tcpClient, tcpConnectionInfo, _parent._server.Server.Certificate.Certificate, _parent._server.Server.CipherSuitesPolicy, timeout); using (_contextPool.AllocateOperationContext(out JsonOperationContext ctx)) await using (var writer = new AsyncBlittableJsonTextWriter(ctx, connection)) { var parameters = new AsyncTcpNegotiateParameters { Database = null, Operation = TcpConnectionHeaderMessage.OperationTypes.Heartbeats, Version = TcpConnectionHeaderMessage.HeartbeatsTcpVersion, ReadResponseAndGetVersionCallbackAsync = SupervisorReadResponseAndGetVersionAsync, DestinationUrl = url, DestinationNodeTag = ClusterTag }; supportedFeatures = await TcpNegotiation.NegotiateProtocolVersionAsync(ctx, connection, parameters); await WriteClusterMaintenanceConnectionHeaderAsync(writer); } return(new ClusterMaintenanceConnection { TcpClient = tcpClient, Stream = connection, SupportedFeatures = supportedFeatures }); }
private async Task <TcpConnectionHeaderMessage.SupportedFeatures> NegotiateProtocolVersionAsyncForClusterSupervisor(string url, TcpConnectionInfo info, Stream stream, JsonOperationContext context, List <string> _) { var parameters = new AsyncTcpNegotiateParameters { Database = null, Operation = TcpConnectionHeaderMessage.OperationTypes.Heartbeats, Version = TcpConnectionHeaderMessage.HeartbeatsTcpVersion, ReadResponseAndGetVersionCallbackAsync = SupervisorReadResponseAndGetVersionAsync, DestinationUrl = url, DestinationNodeTag = ClusterTag, DestinationServerId = info.ServerId }; return(await TcpNegotiation.NegotiateProtocolVersionAsync(context, stream, parameters)); }