示例#1
0
        public void Release(IProtoBufConnection connection)
        {
            IProtoBufConnection removed;

            ReservedConnections.TryRemove(connection, out removed);
            AvailableConnections.Enqueue(connection);
        }
示例#2
0
        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);
        }
示例#3
0
        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));
        }
示例#4
0
 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));
        }