// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics.Contracts;
using System.Globalization;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using System.Web.Http.Controllers;
using System.Web.Http.Filters;
using System.Web.Http.Properties;
using System.Web.Http.Services;
namespace System.Web.Http.Tracing.Tracers
{
///
/// Tracer for .
///
internal class HttpActionDescriptorTracer : HttpActionDescriptor, IDecorator
{
private const string ExecuteMethodName = "ExecuteAsync";
private readonly HttpActionDescriptor _innerDescriptor;
private readonly ITraceWriter _traceWriter;
public HttpActionDescriptorTracer(HttpControllerContext controllerContext, HttpActionDescriptor innerDescriptor, ITraceWriter traceWriter)
: base(controllerContext.ControllerDescriptor)
{
Contract.Assert(innerDescriptor != null);
Contract.Assert(traceWriter != null);
_innerDescriptor = innerDescriptor;
_traceWriter = traceWriter;
}
public HttpActionDescriptor Inner
{
get { return _innerDescriptor; }
}
public override ConcurrentDictionary