File: System\ServiceModel\Diagnostics\DiagnosticTraceSource.cs
Project: ndp\cdf\src\WCF\SMDiagnostics\SMDiagnostics.csproj (SMDiagnostics)
//-----------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------------------------
namespace System.ServiceModel.Diagnostics
{
    using System.Diagnostics;
 
    class DiagnosticTraceSource : PiiTraceSource
    {
        const string PropagateActivityValue = "propagateActivity";
        internal DiagnosticTraceSource(string name, string eventSourceName)
            : base(name, eventSourceName)
        {
        }
 
        internal DiagnosticTraceSource(string name, string eventSourceName, SourceLevels level)
            : base(name, eventSourceName, level)
        {
        }
 
        protected override string[] GetSupportedAttributes()
        {
            string[] baseAttributes = base.GetSupportedAttributes();
            string[] supportedAttributes = new string[baseAttributes.Length + 1];
            for (int i = 0; i < baseAttributes.Length; i++)
            {
                supportedAttributes[i] = baseAttributes[i];
            }
            supportedAttributes[baseAttributes.Length] = DiagnosticTraceSource.PropagateActivityValue;
 
            return supportedAttributes;
        }
 
        internal bool PropagateActivity
        {
            get
            {
                bool retval = false;
                string attributeValue = this.Attributes[DiagnosticTraceSource.PropagateActivityValue];
                if (!string.IsNullOrEmpty(attributeValue))
                {
                    if (!bool.TryParse(attributeValue, out retval))
                    {
                        retval = false;
                    }
                }
                return retval;
            }
            set
            {
                this.Attributes[DiagnosticTraceSource.PropagateActivityValue] = value.ToString();
            }
        }
    }
}