/// <summary> /// Returns the CachedEntities metadata for the given entity. /// </summary> private UnorderedListMetadata GetMetadata(RuntimeEntity entity) { // get our unordered list metadata or create it UnorderedListMetadata metadata; if (entity.Metadata.UnorderedListMetadata.TryGetValue(_metadataKey, out metadata) == false) { metadata = new UnorderedListMetadata(); entity.Metadata.UnorderedListMetadata[_metadataKey] = metadata; } return(metadata); }
/// <summary> /// Updates the status of the entity inside of the cache; ie, if the entity is now /// passing the filter but was not before, then it will be added to the cache. /// </summary> /// <returns>The change in cache status for the entity</returns> public CacheChangeResult UpdateCache(RuntimeEntity entity) { UnorderedListMetadata metadata = GetMetadata(entity); bool passed = _filter.Check(entity); bool contains = CachedEntities.Contains(entity, metadata); // The entity is not in the cache it now passes the filter, so add it to the cache if (contains == false && passed) { CachedEntities.Add(entity, metadata); return(CacheChangeResult.Added); } // The entity is in the cache but it no longer passes the filter, so remove it if (contains && passed == false) { CachedEntities.Remove(entity, metadata); return(CacheChangeResult.Removed); } // no change to the cache return(CacheChangeResult.NoChange); }
/// <summary> /// Returns the CachedEntities metadata for the given entity. /// </summary> private UnorderedListMetadata GetMetadata(RuntimeEntity entity) { // get our unordered list metadata or create it UnorderedListMetadata metadata; if (entity.Metadata.UnorderedListMetadata.TryGetValue(_metadataKey, out metadata) == false) { metadata = new UnorderedListMetadata(); entity.Metadata.UnorderedListMetadata[_metadataKey] = metadata; } return metadata; }