cleared when media was deleted. Created base classes for cache refreshers, we now have a new event - CacheUpdated which can now be used by code to execute on each individual server when any cache refresher is updated. Listening to events normally only fire on the individual server so if people are wanting to refresh their own cache there was previously no way to do that.
67 lines
2.3 KiB
C#
67 lines
2.3 KiB
C#
using System;
|
|
using Umbraco.Core.Events;
|
|
using Umbraco.Core.Sync;
|
|
using umbraco.interfaces;
|
|
|
|
namespace Umbraco.Core.Cache
|
|
{
|
|
/// <summary>
|
|
/// A base class for cache refreshers to inherit from that ensures the correct events are raised
|
|
/// when cache refreshing occurs.
|
|
/// </summary>
|
|
/// <typeparam name="TInstanceType">The real cache refresher type, this is used for raising strongly typed events</typeparam>
|
|
public abstract class CacheRefresherBase<TInstanceType> : ICacheRefresher
|
|
where TInstanceType : ICacheRefresher
|
|
{
|
|
/// <summary>
|
|
/// An event that is raised when cache is updated on an individual server
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// This event will fire on each server configured for an Umbraco project whenever a cache refresher
|
|
/// is updated.
|
|
/// </remarks>
|
|
public static event TypedEventHandler<TInstanceType, CacheRefresherEventArgs> CacheUpdated;
|
|
|
|
/// <summary>
|
|
/// Raises the event
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="args"></param>
|
|
protected static void OnCacheUpdated(TInstanceType sender, CacheRefresherEventArgs args)
|
|
{
|
|
if (CacheUpdated != null)
|
|
{
|
|
CacheUpdated(sender, args);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns the real instance of the object ('this') for use in strongly typed events
|
|
/// </summary>
|
|
protected abstract TInstanceType Instance { get; }
|
|
|
|
public abstract Guid UniqueIdentifier { get; }
|
|
|
|
public abstract string Name { get; }
|
|
|
|
public virtual void RefreshAll()
|
|
{
|
|
OnCacheUpdated(Instance, new CacheRefresherEventArgs(null, MessageType.RefreshAll));
|
|
}
|
|
|
|
public virtual void Refresh(int id)
|
|
{
|
|
OnCacheUpdated(Instance, new CacheRefresherEventArgs(id, MessageType.RefreshById));
|
|
}
|
|
|
|
public virtual void Remove(int id)
|
|
{
|
|
OnCacheUpdated(Instance, new CacheRefresherEventArgs(id, MessageType.RemoveById));
|
|
}
|
|
|
|
public virtual void Refresh(Guid id)
|
|
{
|
|
OnCacheUpdated(Instance, new CacheRefresherEventArgs(id, MessageType.RefreshById));
|
|
}
|
|
}
|
|
} |