コード例 #1
0
        /// <summary>
        /// Adds a connection to the _connectionTable if already not present.
        /// Otherwise, increments the referrence count for it.
        /// </summary>
        /// <param name="connString"></param>
        /// <param name="connection">An initialized connection object</param>
        /// <returns></returns>
        public IDbConnection PoolConnection(string connString, IDbConnection connection)
        {
            lock (this)
            {
                string connKey = connString.ToLower();

                DbResourceInfo connInfo = (DbResourceInfo)GetResource(connKey);
                if (connInfo == null)
                {
                    connection.ConnectionString = connection.ConnectionString;
                    connection.Open();
                    connInfo = new DbResourceInfo(connection);
                    AddResource(connKey, connInfo);
                }
                else
                {
                    if (connInfo.Connection.State == ConnectionState.Broken || connInfo.Connection.State == ConnectionState.Closed)
                    {
                        connection.Open();
                    }
                    AddResource(connKey, null);                      //To increase the reference count
                }

                return(connInfo.Connection);
            }
        }
コード例 #2
0
 /// <summary>
 /// Remove all the stored sync information
 /// </summary>
 public void FlushSyncData()
 {
     lock (this)
     {
         IEnumerator em = Keys.GetEnumerator();
         while (em.MoveNext())
         {
             DbResourceInfo connInfo = (DbResourceInfo)GetResource((string)em.Current);
             connInfo.DbSyncInfo = null;
         }
     }
 }
コード例 #3
0
 /// <summary>
 /// Wrapper for ResourcePool.GetResource(string key).
 /// </summary>
 /// <param name="connString"></param>
 /// <returns></returns>
 public IDictionary GetResourceSyncInfo(string connString)
 {
     lock (this)
     {
         DbResourceInfo connInfo = (DbResourceInfo)GetResource(connString.ToLower());
         if (connInfo != null)
         {
             return(connInfo.DbSyncInfo);
         }
         return(null);
     }
 }
コード例 #4
0
 /// <summary>
 /// Wrapper for ResourcePool.GetResource(string key).
 /// </summary>
 /// <param name="connString"></param>
 /// <returns></returns>
 public IDbConnection GetConnection(string connString)
 {
     lock (this)
     {
         DbResourceInfo connInfo = (DbResourceInfo)GetResource(connString.ToLower());
         if (connInfo != null)
         {
             return(connInfo.Connection);
         }
         return(null);
     }
 }
コード例 #5
0
        /// <summary>
        /// Remove all the records where work_in_progress flag is set.
        /// </summary>
        /// <returns></returns>
        public void RemoveSyncData(string syncTable, string cacheName)
        {
            lock (this)
            {
                IEnumerator em = Keys.GetEnumerator();
                while (em.MoveNext())
                {
                    DbResourceInfo connInfo = (DbResourceInfo)GetResource((string)em.Current);

                    RemoveTableData(syncTable, cacheName, connInfo.Connection);
                    connInfo.DbSyncInfo = null;
                }
            }
        }
コード例 #6
0
        /// <summary>
        /// Acquire the modified records in ncache_db_sync table
        /// </summary>
        /// <param name="syncTable"></param>
        /// <param name="cacheName"></param>
        public void AcquireSyncData(string syncTable, string cacheName)
        {
            lock (this)
            {
                IEnumerator em = Keys.GetEnumerator();
                while (em.MoveNext())
                {
                    DbResourceInfo connInfo = (DbResourceInfo)GetResource((string)em.Current);

                    IDictionary dbSyncInfo = LoadTableData(syncTable, cacheName, connInfo.Connection);
                    connInfo.DbSyncInfo = dbSyncInfo;
                }
            }
        }
コード例 #7
0
        /// <summary>
        /// Gets the keys which have been modified in the database.
        /// call this method after acquiring the latest database state.
        /// </summary>
        /// <returns> array list of all the modified keys. </returns>
        internal ClusteredArrayList GetExpiredKeys()
        {
            ClusteredArrayList keys = new ClusteredArrayList();

            lock (this)
            {
                IEnumerator em = Keys.GetEnumerator();
                while (em.MoveNext())
                {
                    DbResourceInfo connInfo = (DbResourceInfo)GetResource((string)em.Current);
                    if (connInfo != null && connInfo.DbSyncInfo != null)
                    {
                        keys.AddRange(connInfo.DbSyncInfo.Keys);
                        connInfo.DbSyncInfo = null;
                    }
                }
            }
            return(keys);
        }