/// <summary> /// Connect to a server. /// </summary> /// <param name="ConnectionInfo">ConnectionInfo object containing connection information</param> /// <param name="ConnectionMode">Mode describing the type of connection</param> /// <param name="Params">Optional params to be passed to the ServerInfo object</param> public static void ConnectToServer(ConnectionInfo ConnectionInfo, ConnectionMode ConnectionMode, String[] Params) { if ((ConnectionMode != ConnectionMode.FirstConnect) && (ConnectionMode != ConnectionMode.SongRequest)) { Forms.MainFrm.UpdateStatusLabel("Connecting to \"" + ConnectionInfo.Description + "\" (" + ConnectionMode.ToString() + " mode)."); } Log.AddStatusText("Connecting to server (" + ConnectionMode.ToString() + " mode): " + ConnectionInfo.Description); if (ConnectionInfo.Hostname != "") { Log.AddStatusText("Attempting to resolve hostname: " + ConnectionInfo.Hostname); IPHostEntry hostInfo = Dns.GetHostEntry(ConnectionInfo.Hostname); if (hostInfo.AddressList.Length > 0) { ConnectionInfo.IPAddress = hostInfo.AddressList[0].ToString(); Log.AddStatusText("Hostname (" + ConnectionInfo.Hostname + ") resolved to " + ConnectionInfo.IPAddress + "."); } } serverConnection = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint connectionEndpoint = new IPEndPoint(IPAddress.Parse(ConnectionInfo.IPAddress), ConnectionInfo.InfoPort); try { serverConnection.Connect(connectionEndpoint); } catch (SocketException Se) { if (Se.ErrorCode == 10061) { ServerManager.SetOffline(ConnectionInfo.InternalGUID); Log.AddStatusText("Info server @ " + ConnectionInfo.IPAddress + ":" + ConnectionInfo.InfoPort + " refused connection."); if ((ConnectionMode != ConnectionMode.FirstConnect) && (ConnectionMode != ConnectionMode.OnlineTest) && (ConnectionMode != ConnectionMode.SongRequest)) { MessageBox.Show("The Info Server refused connection. Is the server running? Are ports forwarded?"); } if (ConnectionMode == ConnectionMode.OnlineTest) { Forms.MainFrm.UpdateStatusLabel("Server \"" + ConnectionInfo.Description + "\" is offline. Song skipped."); } } } if (serverConnection.Connected) { ServerInfo tempServerInfo = new ServerInfo(serverConnection, SocketCounter, ConnectionInfo, ConnectionMode); if (Params.Length > 0) { tempServerInfo.ConnectionParams = Params; } ServerInfoList.Add(tempServerInfo); WaitForData(tempServerInfo); Interlocked.Increment(ref SocketCounter); } else { Forms.MainFrm.UpdateStatusLabel("Ready"); } }
/// <summary> /// Returns the canonical URL based on the settings in this MongoUrlBuilder. /// </summary> /// <returns>The canonical URL.</returns> public override string ToString() { StringBuilder url = new StringBuilder(); url.Append("mongodb://"); if (defaultCredentials != null) { url.AppendFormat("{0}:{1}@", Uri.EscapeDataString(defaultCredentials.Username), Uri.EscapeDataString(defaultCredentials.Password)); } if (servers != null) { bool firstServer = true; foreach (MongoServerAddress server in servers) { if (!firstServer) { url.Append(","); } if (server.Port == 27017) { url.Append(server.Host); } else { url.AppendFormat("{0}:{1}", server.Host, server.Port); } firstServer = false; } } if (databaseName != null) { url.Append("/"); url.Append(databaseName); } var query = new StringBuilder(); if (ipv6) { query.AppendFormat("ipv6=true;"); } if ( connectionMode == ConnectionMode.Direct && servers != null && servers.Count() != 1 || connectionMode == ConnectionMode.ReplicaSet && (servers == null || servers.Count() == 1) ) { query.AppendFormat("connect={0};", MongoUtils.ToCamelCase(connectionMode.ToString())); } if (!string.IsNullOrEmpty(replicaSetName)) { query.AppendFormat("replicaSet={0};", replicaSetName); } if (slaveOk) { query.AppendFormat("slaveOk=true;"); } if (safeMode != null && safeMode.Enabled) { query.AppendFormat("safe=true;"); if (safeMode.FSync) { query.Append("fsync=true;"); } if (safeMode.J) { query.Append("j=true;"); } if (safeMode.W != 0 || safeMode.WMode != null) { if (safeMode.W != 0) { query.AppendFormat("w={0};", safeMode.W); } else { query.AppendFormat("w={0};", safeMode.WMode); } if (safeMode.WTimeout != TimeSpan.Zero) { query.AppendFormat("wtimeout={0};", FormatTimeSpan(safeMode.WTimeout)); } } } if (connectTimeout != MongoDefaults.ConnectTimeout) { query.AppendFormat("connectTimeout={0};", FormatTimeSpan(connectTimeout)); } if (maxConnectionIdleTime != MongoDefaults.MaxConnectionIdleTime) { query.AppendFormat("maxIdleTime={0};", FormatTimeSpan(maxConnectionIdleTime)); } if (maxConnectionLifeTime != MongoDefaults.MaxConnectionLifeTime) { query.AppendFormat("maxLifeTime={0};", FormatTimeSpan(maxConnectionLifeTime)); } if (maxConnectionPoolSize != MongoDefaults.MaxConnectionPoolSize) { query.AppendFormat("maxPoolSize={0};", maxConnectionPoolSize); } if (minConnectionPoolSize != MongoDefaults.MinConnectionPoolSize) { query.AppendFormat("minPoolSize={0};", minConnectionPoolSize); } if (socketTimeout != MongoDefaults.SocketTimeout) { query.AppendFormat("socketTimeout={0};", FormatTimeSpan(socketTimeout)); } if (waitQueueMultiple != 00 && waitQueueMultiple != MongoDefaults.WaitQueueMultiple) { query.AppendFormat("waitQueueMultiple={0};", waitQueueMultiple); } if (waitQueueSize != 0 && waitQueueSize != MongoDefaults.WaitQueueSize) { query.AppendFormat("waitQueueSize={0};", waitQueueSize); } if (waitQueueTimeout != MongoDefaults.WaitQueueTimeout) { query.AppendFormat("waitQueueTimeout={0};", FormatTimeSpan(WaitQueueTimeout)); } if (guidRepresentation != MongoDefaults.GuidRepresentation) { query.AppendFormat("guids={0};", guidRepresentation); } if (query.Length != 0) { query.Length = query.Length - 1; // remove trailing ";" if (databaseName == null) { url.Append("/"); } url.Append("?"); url.Append(query.ToString()); } return(url.ToString()); }
/// <summary> /// Returns the canonical URL based on the settings in this MongoUrlBuilder. /// </summary> /// <returns>The canonical URL.</returns> public override string ToString() { StringBuilder url = new StringBuilder(); url.Append("mongodb://"); if (!string.IsNullOrEmpty(_username)) { url.Append(Uri.EscapeDataString(_username)); if (_password != null) { url.AppendFormat(":{0}", Uri.EscapeDataString(_password)); } url.Append("@"); } else if (_password != null) { // this would be weird and we really shouldn't be here... url.AppendFormat(":{0}@", _password); } if (_servers != null) { bool firstServer = true; foreach (MongoServerAddress server in _servers) { if (!firstServer) { url.Append(","); } if (server.Port == 27017) { url.Append(server.Host); } else { url.AppendFormat("{0}:{1}", server.Host, server.Port); } firstServer = false; } } if (_databaseName != null) { url.Append("/"); url.Append(_databaseName); } var query = new StringBuilder(); if (_authenticationMechanism != null) { query.AppendFormat("authMechanism={0};", _authenticationMechanism); } if (_authenticationMechanismProperties.Any()) { query.AppendFormat( "authMechanismProperties={0};", string.Join(",", _authenticationMechanismProperties .Select(x => string.Format("{0}:{1}", x.Key, x.Value)).ToArray())); } if (_authenticationSource != null) { query.AppendFormat("authSource={0};", _authenticationSource); } if (_ipv6) { query.AppendFormat("ipv6=true;"); } if (_useSsl) { query.AppendFormat("ssl=true;"); } if (!_verifySslCertificate) { query.AppendFormat("sslVerifyCertificate=false;"); } if (_connectionMode != ConnectionMode.Automatic) { query.AppendFormat("connect={0};", MongoUtils.ToCamelCase(_connectionMode.ToString())); } if (!string.IsNullOrEmpty(_replicaSetName)) { query.AppendFormat("replicaSet={0};", _replicaSetName); } if (_readPreference != null) { query.AppendFormat("readPreference={0};", MongoUtils.ToCamelCase(_readPreference.ReadPreferenceMode.ToString())); if (_readPreference.TagSets != null) { foreach (var tagSet in _readPreference.TagSets) { query.AppendFormat("readPreferenceTags={0};", string.Join(",", tagSet.Tags.Select(t => string.Format("{0}:{1}", t.Name, t.Value)).ToArray())); } } } if (_fsync != null) { query.AppendFormat("fsync={0};", JsonConvert.ToString(_fsync.Value)); } if (_journal != null) { query.AppendFormat("journal={0};", JsonConvert.ToString(_journal.Value)); } if (_w != null) { query.AppendFormat("w={0};", _w); } if (_wTimeout != null) { query.AppendFormat("wtimeout={0};", FormatTimeSpan(_wTimeout.Value)); } if (_connectTimeout != MongoDefaults.ConnectTimeout) { query.AppendFormat("connectTimeout={0};", FormatTimeSpan(_connectTimeout)); } if (_maxConnectionIdleTime != MongoDefaults.MaxConnectionIdleTime) { query.AppendFormat("maxIdleTime={0};", FormatTimeSpan(_maxConnectionIdleTime)); } if (_maxConnectionLifeTime != MongoDefaults.MaxConnectionLifeTime) { query.AppendFormat("maxLifeTime={0};", FormatTimeSpan(_maxConnectionLifeTime)); } if (_maxConnectionPoolSize != MongoDefaults.MaxConnectionPoolSize) { query.AppendFormat("maxPoolSize={0};", _maxConnectionPoolSize); } if (_minConnectionPoolSize != MongoDefaults.MinConnectionPoolSize) { query.AppendFormat("minPoolSize={0};", _minConnectionPoolSize); } if (_localThreshold != MongoDefaults.LocalThreshold) { query.AppendFormat("localThreshold={0};", FormatTimeSpan(_localThreshold)); } if (_socketTimeout != MongoDefaults.SocketTimeout) { query.AppendFormat("socketTimeout={0};", FormatTimeSpan(_socketTimeout)); } if (_waitQueueMultiple != 0.0 && _waitQueueMultiple != MongoDefaults.WaitQueueMultiple) { query.AppendFormat("waitQueueMultiple={0};", _waitQueueMultiple); } if (_waitQueueSize != 0 && _waitQueueSize != MongoDefaults.WaitQueueSize) { query.AppendFormat("waitQueueSize={0};", _waitQueueSize); } if (_waitQueueTimeout != MongoDefaults.WaitQueueTimeout) { query.AppendFormat("waitQueueTimeout={0};", FormatTimeSpan(WaitQueueTimeout)); } if (_guidRepresentation != MongoDefaults.GuidRepresentation) { query.AppendFormat("uuidRepresentation={0};", (_guidRepresentation == GuidRepresentation.CSharpLegacy) ? "csharpLegacy" : MongoUtils.ToCamelCase(_guidRepresentation.ToString())); } if (query.Length != 0) { query.Length = query.Length - 1; // remove trailing ";" if (_databaseName == null) { url.Append("/"); } url.Append("?"); url.Append(query.ToString()); } return(url.ToString()); }
/// <summary> /// Returns the canonical URL based on the settings in this MongoUrlBuilder. /// </summary> /// <returns>The canonical URL.</returns> public override string ToString() { StringBuilder url = new StringBuilder(); url.Append("mongodb://"); if (_defaultCredentials != null) { url.AppendFormat("{0}:{1}@", Uri.EscapeDataString(_defaultCredentials.Username), Uri.EscapeDataString(_defaultCredentials.Password)); } if (_servers != null) { bool firstServer = true; foreach (MongoServerAddress server in _servers) { if (!firstServer) { url.Append(","); } if (server.Port == 27017) { url.Append(server.Host); } else { url.AppendFormat("{0}:{1}", server.Host, server.Port); } firstServer = false; } } if (_databaseName != null) { url.Append("/"); url.Append(_databaseName); } var query = new StringBuilder(); if (_ipv6) { query.AppendFormat("ipv6=true;"); } if (_useSsl) { query.AppendFormat("ssl=true;"); if (!_verifySslCertificate) { query.AppendFormat("sslVerifyCertificate=false;"); } } if (_connectionMode == ConnectionMode.Direct && _servers != null && _servers.Count() != 1 || _connectionMode == ConnectionMode.ReplicaSet && (_servers == null || _servers.Count() == 1)) { query.AppendFormat("connect={0};", MongoUtils.ToCamelCase(_connectionMode.ToString())); } if (!string.IsNullOrEmpty(_replicaSetName)) { query.AppendFormat("replicaSet={0};", _replicaSetName); } if (_slaveOk.HasValue) { query.AppendFormat("slaveOk={0};", _slaveOk.Value ? "true" : "false"); // note: bool.ToString() returns "True" and "False" } if (_readPreference != null) { query.AppendFormat("readPreference={0};", MongoUtils.ToCamelCase(_readPreference.ReadPreferenceMode.ToString())); if (_readPreference.TagSets != null) { foreach (var tagSet in _readPreference.TagSets) { query.AppendFormat("readPreferenceTags={0};", string.Join(",", tagSet.Select(t => string.Format("{0}:{1}", t.Name, t.Value)).ToArray())); } } } if (_safeMode != null && _safeMode.Enabled) { query.AppendFormat("safe=true;"); if (_safeMode.FSync) { query.Append("fsync=true;"); } if (_safeMode.Journal) { query.Append("journal=true;"); } if (_safeMode.W != 0 || _safeMode.WMode != null) { if (_safeMode.W != 0) { query.AppendFormat("w={0};", _safeMode.W); } else { query.AppendFormat("w={0};", _safeMode.WMode); } if (_safeMode.WTimeout != TimeSpan.Zero) { query.AppendFormat("wtimeout={0};", FormatTimeSpan(_safeMode.WTimeout)); } } } if (_connectTimeout != MongoDefaults.ConnectTimeout) { query.AppendFormat("connectTimeout={0};", FormatTimeSpan(_connectTimeout)); } if (_maxConnectionIdleTime != MongoDefaults.MaxConnectionIdleTime) { query.AppendFormat("maxIdleTime={0};", FormatTimeSpan(_maxConnectionIdleTime)); } if (_maxConnectionLifeTime != MongoDefaults.MaxConnectionLifeTime) { query.AppendFormat("maxLifeTime={0};", FormatTimeSpan(_maxConnectionLifeTime)); } if (_maxConnectionPoolSize != MongoDefaults.MaxConnectionPoolSize) { query.AppendFormat("maxPoolSize={0};", _maxConnectionPoolSize); } if (_minConnectionPoolSize != MongoDefaults.MinConnectionPoolSize) { query.AppendFormat("minPoolSize={0};", _minConnectionPoolSize); } if (_socketTimeout != MongoDefaults.SocketTimeout) { query.AppendFormat("socketTimeout={0};", FormatTimeSpan(_socketTimeout)); } if (_waitQueueMultiple != 0.0 && _waitQueueMultiple != MongoDefaults.WaitQueueMultiple) { query.AppendFormat("waitQueueMultiple={0};", _waitQueueMultiple); } if (_waitQueueSize != 0 && _waitQueueSize != MongoDefaults.WaitQueueSize) { query.AppendFormat("waitQueueSize={0};", _waitQueueSize); } if (_waitQueueTimeout != MongoDefaults.WaitQueueTimeout) { query.AppendFormat("waitQueueTimeout={0};", FormatTimeSpan(WaitQueueTimeout)); } if (_guidRepresentation != MongoDefaults.GuidRepresentation) { query.AppendFormat("uuidRepresentation={0};", _guidRepresentation); } if (query.Length != 0) { query.Length = query.Length - 1; // remove trailing ";" if (_databaseName == null) { url.Append("/"); } url.Append("?"); url.Append(query.ToString()); } return(url.ToString()); }