Esempio n. 1
0
            /// <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);
            }
Esempio n. 2
0
            /// <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);
            }
Esempio n. 3
0
            /// <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;
            }