示例#1
0
        private void MemberCacheRefresherUpdated(MemberCacheRefresher sender, CacheRefresherEventArgs args)
        {
            if (Suspendable.ExamineEvents.CanIndex == false)
            {
                return;
            }

            switch (args.MessageType)
            {
            case MessageType.RefreshById:
                var c1 = _services.MemberService.GetById((int)args.MessageObject);
                if (c1 != null)
                {
                    ReIndexForMember(c1);
                }
                break;

            case MessageType.RemoveById:

                // This is triggered when the item is permanently deleted

                DeleteIndexForEntity((int)args.MessageObject, false);
                break;

            case MessageType.RefreshByInstance:
                if (args.MessageObject is IMember c3)
                {
                    ReIndexForMember(c3);
                }
                break;

            case MessageType.RemoveByInstance:

                // This is triggered when the item is permanently deleted

                if (args.MessageObject is IMember c4)
                {
                    DeleteIndexForEntity(c4.Id, false);
                }
                break;

            case MessageType.RefreshByPayload:
                var payload = (MemberCacheRefresher.JsonPayload[])args.MessageObject;
                var members = payload.Select(x => _services.MemberService.GetById(x.Id));
                foreach (var m in members)
                {
                    ReIndexForMember(m);
                }
                break;

            case MessageType.RefreshAll:
            case MessageType.RefreshByJson:
            default:
                //We don't support these, these message types will not fire for unpublished content
                break;
            }
        }
    public override void Refresh(JsonPayload[] payloads)
    {
        // TODO: refactor
        // we should NOT directly clear caches here, but instead ask whatever class
        // is managing the cache to please clear that cache properly
        _contentTypeCommonRepository.ClearCache(); // always

        if (payloads.Any(x => x.ItemType == typeof(IContentType).Name))
        {
            ClearAllIsolatedCacheByEntityType <IContent>();
            ClearAllIsolatedCacheByEntityType <IContentType>();
        }

        if (payloads.Any(x => x.ItemType == typeof(IMediaType).Name))
        {
            ClearAllIsolatedCacheByEntityType <IMedia>();
            ClearAllIsolatedCacheByEntityType <IMediaType>();
        }

        if (payloads.Any(x => x.ItemType == typeof(IMemberType).Name))
        {
            ClearAllIsolatedCacheByEntityType <IMember>();
            ClearAllIsolatedCacheByEntityType <IMemberType>();
        }

        foreach (var id in payloads.Select(x => x.Id))
        {
            _idKeyMap.ClearCache(id);
        }

        if (payloads.Any(x => x.ItemType == typeof(IContentType).Name))
        {
            // don't try to be clever - refresh all
            ContentCacheRefresher.RefreshContentTypes(AppCaches);
        }

        if (payloads.Any(x => x.ItemType == typeof(IMediaType).Name))
        {
            // don't try to be clever - refresh all
            MediaCacheRefresher.RefreshMediaTypes(AppCaches);
        }

        if (payloads.Any(x => x.ItemType == typeof(IMemberType).Name))
        {
            // don't try to be clever - refresh all
            MemberCacheRefresher.RefreshMemberTypes(AppCaches);
        }

        // refresh the models and cache
        _publishedModelFactory.WithSafeLiveFactoryReset(() =>
                                                        _publishedSnapshotService.Notify(payloads));

        // now we can trigger the event
        base.Refresh(payloads);
    }
        static void MemberCacheRefresherCacheUpdated(MemberCacheRefresher sender, CacheRefresherEventArgs e)
        {
            if (Suspendable.ExamineEvents.CanIndex == false)
            {
                return;
            }

            switch (e.MessageType)
            {
            case MessageType.RefreshById:
                var c1 = ApplicationContext.Current.Services.MemberService.GetById((int)e.MessageObject);
                if (c1 != null)
                {
                    ReIndexForMember(c1);
                }
                break;

            case MessageType.RemoveById:

                // This is triggered when the item is permanently deleted

                DeleteIndexForEntity((int)e.MessageObject, false);
                break;

            case MessageType.RefreshByInstance:
                var c3 = e.MessageObject as IMember;
                if (c3 != null)
                {
                    ReIndexForMember(c3);
                }
                break;

            case MessageType.RemoveByInstance:

                // This is triggered when the item is permanently deleted

                var c4 = e.MessageObject as IMember;
                if (c4 != null)
                {
                    DeleteIndexForEntity(c4.Id, false);
                }
                break;

            case MessageType.RefreshAll:
            case MessageType.RefreshByJson:
            default:
                //We don't support these, these message types will not fire for unpublished content
                break;
            }
        }
示例#4
0
        private void MemberCacheRefresherUpdated(MemberCacheRefresher sender, CacheRefresherEventArgs args)
        {
            switch (args.MessageType)
            {
            case MessageType.RefreshById:
                var c1 = _services.MemberService.GetById((int)args.MessageObject);
                if (c1 != null)
                {
                    ReIndexForMember(c1);
                }

                break;

            case MessageType.RemoveById:

                // This is triggered when the item is permanently deleted

                DeleteIndexForEntity((int)args.MessageObject, false);
                break;

            case MessageType.RefreshByInstance:
                if (args.MessageObject is IMember c3)
                {
                    ReIndexForMember(c3);
                }

                break;

            case MessageType.RemoveByInstance:

                // This is triggered when the item is permanently deleted

                if (args.MessageObject is IMember c4)
                {
                    DeleteIndexForEntity(c4.Id, false);
                }

                break;

            case MessageType.RefreshAll:
            case MessageType.RefreshByJson:
            default:
                //We don't support these, these message types will not fire for unpublished content
                break;
            }
        }
示例#5
0
 /// <summary>
 /// The media cache refresher cache updated event handler.
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The <see cref="CacheRefresherEventArgs"/> containing information about the event.</param>
 private void MemberCacheRefresherCacheUpdated(MemberCacheRefresher sender, CacheRefresherEventArgs e)
 {
     this.ClearCache();
 }
 private void MemberCacheRefresherOnCacheUpdated(MemberCacheRefresher sender, CacheRefresherEventArgs cacheRefresherEventArgs)
 {
     _logService.Debug <ClearDonutOutputCache>("MemberCacheRefresherOnCacheUpdated");
     ClearCache();
 }
 private void MemberCacheRefresherOnCacheUpdated(MemberCacheRefresher sender,
                                                 CacheRefresherEventArgs cacheRefresherEventArgs)
 {
     ClearCache();
 }
 private void MemberCacheRefresherOnCacheUpdated(MemberCacheRefresher sender, CacheRefresherEventArgs cacheRefresherEventArgs)
 {
     Log.Debug("Clearing output cache");
     ClearCache();
 }