/// <summary> /// Generates a client connection. /// </summary> /// <param name="address">The address.</param> /// <param name="common">The common parameters.</param> /// <returns> /// The client connection. /// </returns> public static CruiseServerClientBase GenerateClient(string address, CommonCmdlet common) { // Build up the address var actualAddress = address; if (!actualAddress.Contains("//")) { // Address does not contain the protocol if (actualAddress.Equals("localhost", StringComparison.OrdinalIgnoreCase) || actualAddress.Equals("127.0.0.1", StringComparison.OrdinalIgnoreCase)) { actualAddress = "tcp://" + actualAddress; if (!actualAddress.Contains(":")) { // Add the default port actualAddress += ":21234"; } } else { actualAddress = "http://" + actualAddress; } } // Generate the client var clientFactory = new CruiseServerClientFactory(); var settings = new ClientStartUpSettings { UseEncryption = common.Encrypted, BackwardsCompatable = common.BackwardsCompatable }; var client = clientFactory.GenerateClient(actualAddress, settings); client.TargetServer = common.Target; return client; }
/// <summary> /// Generates an instance of <see cref="CruiseServerClientBase"/> that connects via /// .NET Remoting. /// </summary> /// <param name="address">The address of the server.</param> /// <param name="settings">The start-up settings to use.</param> /// <returns>A <see cref="CruiseServerClientBase"/> instance.</returns> public CruiseServerClientBase GenerateRemotingClient(string address, ClientStartUpSettings settings) { var client = clients.ContainsKey(address) ? clients[address] : null; if (client == null) { if (settings.BackwardsCompatable) { client = new CruiseServerRemotingClient(address); } else { IServerConnection connection = new RemotingConnection(address); connection = BuildUpConnection(connection, settings); client = new CruiseServerClient(connection); } if (UseClientCaching) { clients.Add(address, client); } } return(client); }
/// <summary> /// Generates an instance of <see cref="CruiseServerClientBase"/>. The transport protocol will be /// detected from the address. /// </summary> /// <param name="address">The address of the server.</param> /// <param name="settings">The start-up settings to use.</param> /// <returns>A <see cref="CruiseServerClientBase"/> instance.</returns> public CruiseServerClientBase GenerateClient(string address, ClientStartUpSettings settings) { var serverUri = new Uri(address); var transport = serverUri.Scheme.ToLower(); if (initialisers.ContainsKey(transport)) { if (UseClientCaching && clients.ContainsKey(address)) { return(clients[address]); } else { var client = initialisers[transport](address, settings); if (UseClientCaching) { clients.Add(address, client); } return(client); } } else { throw new ApplicationException("Unknown transport protocol"); } }
/// <summary> /// Generates a set of <see cref="ClientStartUpSettings"/>. /// </summary> /// <param name="server"></param> /// <returns></returns> public static ClientStartUpSettings GenerateStartupSettings(BuildServer server) { var extSettings = server.ExtensionSettings ?? string.Empty; if (extSettings.Length < 6) extSettings += new string(' ', 6 - extSettings.Length); var settings = new ClientStartUpSettings { BackwardsCompatable = (extSettings.Substring(0, 3) == "OLD"), UseEncryption = (extSettings.Substring(3, 3) == "SEC") }; return settings; }
/// <summary> /// Generates an instance of <see cref="CruiseServerClientBase"/>. The transport protocol will be /// detected from the address. /// </summary> /// <param name="address">The address of the server.</param> /// <param name="settings">The start-up settings to use.</param> /// <returns>A <see cref="CruiseServerClientBase"/> instance.</returns> public CruiseServerClientBase GenerateClient(string address, ClientStartUpSettings settings) { var serverUri = new Uri(address); var transport = serverUri.Scheme.ToLower(); if (initialisers.ContainsKey(transport)) { if (UseClientCaching && clients.ContainsKey(address)) { return clients[address]; } else { var client = initialisers[transport](address, settings); if (UseClientCaching) clients.Add(address, client); return client; } } else { throw new ApplicationException("Unknown transport protocol"); } }
/// <summary> /// Builds a server connection based on the start-up options. /// </summary> /// <param name="connection"></param> /// <param name="settings"></param> /// <returns></returns> public static IServerConnection BuildUpConnection(IServerConnection connection, ClientStartUpSettings settings) { if (settings.UseEncryption) { connection = new EncryptingConnection(connection); } return(connection); }
/// <summary> /// Generates an instance of <see cref="CruiseServerClientBase"/> that connects via /// .NET Remoting to another server. /// </summary> /// <param name="address">The address of the server.</param> /// <param name="targetServer">The name of the other server.</param> /// <param name="settings">The start-up settings to use.</param> /// <returns>A <see cref="CruiseServerClientBase"/> instance.</returns> public CruiseServerClientBase GenerateRemotingClient(string address, string targetServer, ClientStartUpSettings settings) { var client = GenerateRemotingClient(address, settings); client.TargetServer = targetServer; return(client); }
/// <summary> /// Builds a server connection based on the start-up options. /// </summary> /// <param name="connection"></param> /// <param name="settings"></param> /// <returns></returns> public static IServerConnection BuildUpConnection(IServerConnection connection, ClientStartUpSettings settings) { if (settings.UseEncryption) connection = new EncryptingConnection(connection); return connection; }
/// <summary> /// Generates an instance of <see cref="CruiseServerClientBase"/> that connects via /// .NET Remoting to another server. /// </summary> /// <param name="address">The address of the server.</param> /// <param name="targetServer">The name of the other server.</param> /// <param name="settings">The start-up settings to use.</param> /// <returns>A <see cref="CruiseServerClientBase"/> instance.</returns> public CruiseServerClientBase GenerateRemotingClient(string address, string targetServer, ClientStartUpSettings settings) { var client = GenerateRemotingClient(address, settings); client.TargetServer = targetServer; return client; }
/// <summary> /// Generates an instance of <see cref="CruiseServerClientBase"/> that connects via /// .NET Remoting. /// </summary> /// <param name="address">The address of the server.</param> /// <param name="settings">The start-up settings to use.</param> /// <returns>A <see cref="CruiseServerClientBase"/> instance.</returns> public CruiseServerClientBase GenerateRemotingClient(string address, ClientStartUpSettings settings) { var client = clients.ContainsKey(address) ? clients[address] : null; if (client == null) { if (settings.BackwardsCompatable) { client = new CruiseServerRemotingClient(address); } else { IServerConnection connection = new RemotingConnection(address); connection = BuildUpConnection(connection, settings); client = new CruiseServerClient(connection); } if (UseClientCaching) clients.Add(address, client); } return client; }