Files
Umbraco-CMS/src/Umbraco.Core/Profiling/ProfilingViewEngine.cs

48 lines
1.6 KiB
C#
Raw Normal View History

2013-11-07 17:16:22 +01:00
using System.Web.Mvc;
namespace Umbraco.Core.Profiling
{
public class ProfilingViewEngine: IViewEngine
{
internal readonly IViewEngine Inner;
2013-11-07 17:16:22 +01:00
private readonly string _name;
public ProfilingViewEngine(IViewEngine inner)
{
Inner = inner;
2013-11-07 17:16:22 +01:00
_name = inner.GetType().Name;
}
public ViewEngineResult FindPartialView(ControllerContext controllerContext, string partialViewName, bool useCache)
{
using (ProfilerResolver.Current.Profiler.Step(string.Format("{0}.FindPartialView, {1}, {2}", _name, partialViewName, useCache)))
{
return WrapResult(Inner.FindPartialView(controllerContext, partialViewName, useCache));
2013-11-07 17:16:22 +01:00
}
}
public ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
{
using (ProfilerResolver.Current.Profiler.Step(string.Format("{0}.FindView, {1}, {2}, {3}", _name, viewName, masterName, useCache)))
{
return WrapResult(Inner.FindView(controllerContext, viewName, masterName, useCache));
2013-11-07 17:16:22 +01:00
}
}
private static ViewEngineResult WrapResult(ViewEngineResult innerResult)
{
var profiledResult = innerResult.View != null ?
new ViewEngineResult(new ProfilingView(innerResult.View), innerResult.ViewEngine) :
new ViewEngineResult(innerResult.SearchedLocations);
return profiledResult;
}
public void ReleaseView(ControllerContext controllerContext, IView view)
{
using (ProfilerResolver.Current.Profiler.Step(string.Format("{0}.ReleaseView, {1}", _name, view.GetType().Name)))
{
Inner.ReleaseView(controllerContext, view);
2013-11-07 17:16:22 +01:00
}
}
}
}