public void Release(IProtoBufConnection connection) { IProtoBufConnection removed; ReservedConnections.TryRemove(connection, out removed); AvailableConnections.Enqueue(connection); }
public IConnection Acquire() { IConnection connection = null; while (connection == null) { if (!AvailableConnections.TryDequeue(out connection)) { if (ReservedConnections.Count < Configuration.ConnectionLimit) { connection = ConnectionFactory.GetConnection(); } } } try { ReservedConnections[connection] = connection; } catch (Exception e) { //TODO: put real error handling here Console.WriteLine(e); } return(connection); }
public IConnectionHandle Acquire() { IProtoBufConnection connection = null; while (connection == null) { if (AvailableConnections.TryDequeue(out connection)) { continue; } if (ReservedConnections.Count + AvailableConnections.Count < Configuration.ConnectionLimit) { connection = ConnectionFactory.GetConnection(); } } try { ReservedConnections[connection] = connection; } catch (Exception e) { Console.WriteLine(e); } return(new PooledConnectionHandle(this, connection)); }
public IDatabase GetConnection(AvailableConnections conn) { return(conn switch { AvailableConnections.Auth => new Database(_authConnectionString, DatabaseType.SqlServer2008, SqlClientFactory.Instance), AvailableConnections.App => new Database(_appConnectionsString, DatabaseType.SqlServer2008, SqlClientFactory.Instance), _ => null, });
public void Release(IProtoBufConnection connection) { ReservedLock.EnterWriteLock(); AvailableLock.EnterWriteLock(); ReservedConnections.Remove(connection); AvailableConnections.Enqueue(connection); AvailableLock.ExitWriteLock(); ReservedLock.ExitWriteLock(); }
private void PopulateConnectionsFor(DbToolContext context) { AvailableConnections.Clear(); var connections = context.Connections; connections.Each(connection => AvailableConnections.Add(connection.Name)); var firstConnection = connections.FirstOrDefault(); if (firstConnection != null) { SelectedConnection = firstConnection.Name; } }
public void Init() { List <CrmConnectionInfo> availableConnections = _connectionHelper.RetrieveAvailableConnections(); if (ConnectionToExclude != null && availableConnections != null) { availableConnections.RemoveAll(x => x.UserId == ConnectionToExclude.UserId && x.OrganizationId == ConnectionToExclude.OrganizationId); } HasExistingConnections = availableConnections.Count > 0; if (!HasExistingConnections) { UseNewConnection = true; } foreach (CrmConnectionInfo crmConnectionInfo in availableConnections) { AvailableConnections.Add(crmConnectionInfo); } }
public IConnectionHandle Acquire() { IProtoBufConnection connection = null; do { AvailableLock.EnterUpgradeableReadLock(); if (AvailableConnections.Count > 0) { AvailableLock.EnterWriteLock(); connection = AvailableConnections.Dequeue(); AvailableLock.ExitWriteLock(); } AvailableLock.ExitUpgradeableReadLock(); if (connection == null) { continue; } ReservedLock.EnterWriteLock(); ReservedConnections.Add(connection); ReservedLock.ExitWriteLock(); } while (connection == null); return(new PooledConnectionHandle(this, connection)); }