public bool AddToCache <T>(Guid mediaItemId, T mediaItemInfo, bool createCopy = true) where T : BaseInfo { if (_cache == null) { return(false); } IDictionary <Guid, IList <MediaItemAspect> > aspects = new Dictionary <Guid, IList <MediaItemAspect> >(); mediaItemInfo.SetMetadata(aspects); IList <MultipleMediaItemAspect> externalAspects; if (!MediaItemAspect.TryGetAspects(aspects, ExternalIdentifierAspect.Metadata, out externalAspects)) { return(false); } if (createCopy) { mediaItemInfo = mediaItemInfo.CloneBasicInstance <T>(); } bool result = false; CachedRelationship entry = new CachedRelationship { MediaItemId = mediaItemId, MediaItemInfo = mediaItemInfo }; foreach (MediaItemAspect externalAspect in externalAspects) { result |= AddToCache(externalAspect, entry); } return(result); }
protected bool TryGetFromCache(BaseInfo mediaItemInfo, out CachedRelationship cachedEntry) { cachedEntry = null; if (_cache == null) { return(false); } IDictionary <Guid, IList <MediaItemAspect> > aspects = new Dictionary <Guid, IList <MediaItemAspect> >(); mediaItemInfo.SetMetadata(aspects); IList <MultipleMediaItemAspect> externalAspects; if (!MediaItemAspect.TryGetAspects(aspects, ExternalIdentifierAspect.Metadata, out externalAspects)) { return(false); } foreach (MediaItemAspect externalAspect in externalAspects) { if (TryGetFromCache(externalAspect, mediaItemInfo, out cachedEntry)) { return(true); } } //ServiceRegistration.Get<ILogger>().Debug("{0}: Cache miss {1} {2}", _cache.Name, mediaItemInfo.GetType().Name, mediaItemInfo); return(false); }
protected bool AddToCache(MediaItemAspect externalAspect, CachedRelationship entry) { string key = CreateCacheKey(externalAspect); var newEntries = new Lazy <ConcurrentDictionary <BaseInfo, CachedRelationship> >(); var entries = _cache.AddOrGetExisting(key, newEntries, _cachePolicy) as Lazy <ConcurrentDictionary <BaseInfo, CachedRelationship> > ?? newEntries; if (entries.Value.TryAdd(entry.MediaItemInfo, entry)) { //ServiceRegistration.Get<ILogger>().Debug("{0}: Added {1} {2} to cache with Id {3} and Key {4}", _cache.Name, entry.MediaItemInfo.GetType().Name, entry.MediaItemInfo, entry.MediaItemId, key); //ServiceRegistration.Get<ILogger>().Debug("{0}: Current entries for external aspect: {1}", _cache.Name, entries.Value.Count); return(true); } return(false); }
protected bool TryGetFromCache(MediaItemAspect externalAspect, BaseInfo mediaItemInfo, out CachedRelationship cachedEntry) { string key = CreateCacheKey(externalAspect); var entries = _cache.Get(key) as Lazy <ConcurrentDictionary <BaseInfo, CachedRelationship> >; if (entries != null && entries.Value.TryGetValue(mediaItemInfo, out cachedEntry)) { //ServiceRegistration.Get<ILogger>().Debug("{0}: Got {1} {2} from cache with Id {3} and Key {4}", _cache.Name, cachedEntry.MediaItemInfo.GetType().Name, cachedEntry.MediaItemInfo, cachedEntry.MediaItemId, key); return(true); } cachedEntry = null; return(false); }
internal RelationshipDeletedEventArgs(CachedRelationship relationship) : base(relationship.Client) { Relationship = relationship; }