DistributedFileSystem.DFS.CheckForChunkDataCacheTimeouts C# (CSharp) Method

CheckForChunkDataCacheTimeouts() private static method

Flick through the chunk data cache and remove any items that have timed out
private static CheckForChunkDataCacheTimeouts ( ) : void
return void
        private static void CheckForChunkDataCacheTimeouts()
        {
            lock (chunkDataCacheLocker)
            {
                if ((DateTime.Now - lastChunkCacheCleanup).TotalSeconds > ChunkCacheDataCleanupIntervalSecs)
                {
                    if (DFS.loggingEnabled) DFS._DFSLogger.Trace("Starting ChunkDataCache cleanup.");

                    int removedCount = 0;

                    ShortGuid[] peerKeys = chunkDataCache.Keys.ToArray();
                    for (int i = 0; i < peerKeys.Length; i++)
                    {
                        string[] dataSequenceKeys = chunkDataCache[peerKeys[i]].Keys.ToArray();
                        for (int k = 0; k < dataSequenceKeys.Length; k++)
                        {
                            if ((DateTime.Now - chunkDataCache[peerKeys[i]][dataSequenceKeys[k]].TimeCreated).TotalSeconds > ChunkCacheDataTimeoutSecs)
                            {
                                //If we have timed out data we will remove it
                                chunkDataCache[peerKeys[i]].Remove(dataSequenceKeys[k]);
                                removedCount++;
                            }
                        }

                        //If there is no longer any data for a particular peer we remove the peer entry
                        if (chunkDataCache[peerKeys[i]].Count == 0)
                            chunkDataCache.Remove(peerKeys[i]);
                    }

                    if (DFS.loggingEnabled) DFS._DFSLogger.Trace("Completed ChunkDataCache cleanup having removed " + removedCount + " items.");

                    lastChunkCacheCleanup = DateTime.Now;
                }
            }
        }