internal override RamDiskReplicaTracker.RamDiskReplica DequeueNextReplicaToPersist () { lock (this) { while (replicasNotPersisted.Count != 0) { RamDiskReplicaLruTracker.RamDiskReplicaLru ramDiskReplicaLru = replicasNotPersisted .Remove(); IDictionary <long, RamDiskReplicaLruTracker.RamDiskReplicaLru> replicaMap = replicaMaps [ramDiskReplicaLru.GetBlockPoolId()]; if (replicaMap != null && replicaMap[ramDiskReplicaLru.GetBlockId()] != null) { return(ramDiskReplicaLru); } } // The replica no longer exists, look for the next one. return(null); } }
internal override RamDiskReplicaTracker.RamDiskReplica GetNextCandidateForEviction () { lock (this) { IEnumerator <RamDiskReplicaLruTracker.RamDiskReplicaLru> it = replicasPersisted.Values ().GetEnumerator(); while (it.HasNext()) { RamDiskReplicaLruTracker.RamDiskReplicaLru ramDiskReplicaLru = it.Next(); it.Remove(); IDictionary <long, RamDiskReplicaLruTracker.RamDiskReplicaLru> replicaMap = replicaMaps [ramDiskReplicaLru.GetBlockPoolId()]; if (replicaMap != null && replicaMap[ramDiskReplicaLru.GetBlockId()] != null) { return(ramDiskReplicaLru); } } // The replica no longer exists, look for the next one. return(null); } }