ConfigViewGenerator.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataEntity / System / Data / Map / ViewGeneration / ConfigViewGenerator.cs / 2 / ConfigViewGenerator.cs

                            //---------------------------------------------------------------------- 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// 
// @owner [....]
// @backupOwner [....] 
//--------------------------------------------------------------------- 

using System.Data.Common.Utils; 
using System.Text;
using System.Diagnostics;

namespace System.Data.Mapping.ViewGeneration { 

    internal enum ViewGenerationMode 
    { 
        GenerateAllViews = 0,
        OfTypeViews, 
        OfTypeOnlyViews
    }

    internal enum ViewGenTraceLevel { 
        None = 0,
        ViewsOnly, 
        Normal, 
        Verbose
    } 

    internal enum PerfType {
        InitialSetup = 0,
        CellCreation, 
        KeyConstraint,
        CellNormalizer, 
        UpdateViews, 
        DisjointConstraint,
        PartitionConstraint, 
        DomainConstraint,
        ForeignConstraint,
        QueryViews,
        BoolResolution, 
        Unsatisfiability,
        ViewParsing, 
    } 

    // This class holds some configuration information for the view 
    // generation code
    internal class ConfigViewGenerator : InternalBase {
        #region Constructors
        internal ConfigViewGenerator() { 
            m_watch = new Stopwatch();
            m_singleWatch = new Stopwatch(); 
            int numEnums = Enum.GetNames(typeof(PerfType)).Length; 
            m_breakdownTimes = new TimeSpan[numEnums];
            TraceLevel = ViewGenTraceLevel.None; 
            GenerateViewsForEachType = false;
            StartWatch();
        }
        #endregion 

        #region Fields 
        private bool m_generateViewsForEachType; 
        private ViewGenTraceLevel m_traceLevel;
        private TimeSpan[] m_breakdownTimes; 
        private Stopwatch m_watch;
        private Stopwatch m_singleWatch; // To measure a single thing at a time
        private PerfType m_singlePerfOp; // Perf op being measured
        private bool m_enableValidation = true; 
        #endregion
 
        #region Properties 
        // Callers can set elements in this list
        internal TimeSpan[] BreakdownTimes { 
            get { return m_breakdownTimes;}
        }

        internal ViewGenTraceLevel TraceLevel { 
            get { return m_traceLevel;}
            set {m_traceLevel = value;} 
        } 

        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 
        internal bool IsValidationEnabled
        {
            get { return m_enableValidation; }
            set { m_enableValidation = value; } 
        }
 
        internal bool GenerateViewsForEachType { 
            get { return m_generateViewsForEachType; }
            set { m_generateViewsForEachType = value; } 
        }

        internal bool IsViewTracing {
            get { return IsTraceAllowed(ViewGenTraceLevel.ViewsOnly);} 
        }
 
        internal bool IsNormalTracing { 
            get { return IsTraceAllowed(ViewGenTraceLevel.Normal);}
        } 

        internal bool IsVerboseTracing {
            get { return IsTraceAllowed(ViewGenTraceLevel.Verbose);}
        } 
        #endregion
 
        #region Methods 
        private void StartWatch() {
            m_watch.Start(); 
        }

        internal void StartSingleWatch(PerfType perfType) {
            m_singleWatch.Start(); 
            m_singlePerfOp = perfType;
        } 
 
        // effects: Sets time for perfType for the individual timer
        internal void StopSingleWatch(PerfType perfType) { 
            Debug.Assert(m_singlePerfOp == perfType, "Started op for different activity " + m_singlePerfOp + " -- not " + perfType);
            TimeSpan timeElapsed = m_singleWatch.Elapsed;
            int index = (int)perfType;
            m_singleWatch.Stop(); 
            m_singleWatch.Reset();
            BreakdownTimes[index] = BreakdownTimes[index].Add(timeElapsed); 
        } 

        // effects: Sets time for perfType since the last call to SetTimeForActivity 
        internal void SetTimeForFinishedActivity(PerfType perfType) {
            TimeSpan timeElapsed = m_watch.Elapsed;
            int index = (int)perfType;
            BreakdownTimes[index] = BreakdownTimes[index].Add(timeElapsed); 
            // Trace.WriteLine(perfType + " " + timeElapsed.TotalSeconds);
            m_watch.Reset(); 
            m_watch.Start(); 
        }
 
        // effects: Returns true if this's traceLevel is at least traceLevel
        internal bool IsTraceAllowed(ViewGenTraceLevel traceLevel) {
            return TraceLevel >= traceLevel;
        } 

        internal override void ToCompactString(StringBuilder builder) { 
            StringUtil.FormatStringBuilder(builder, "Trace Switch: {0}", m_traceLevel); 
        }
        #endregion 
    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//---------------------------------------------------------------------- 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// 
// @owner [....]
// @backupOwner [....] 
//--------------------------------------------------------------------- 

using System.Data.Common.Utils; 
using System.Text;
using System.Diagnostics;

namespace System.Data.Mapping.ViewGeneration { 

    internal enum ViewGenerationMode 
    { 
        GenerateAllViews = 0,
        OfTypeViews, 
        OfTypeOnlyViews
    }

    internal enum ViewGenTraceLevel { 
        None = 0,
        ViewsOnly, 
        Normal, 
        Verbose
    } 

    internal enum PerfType {
        InitialSetup = 0,
        CellCreation, 
        KeyConstraint,
        CellNormalizer, 
        UpdateViews, 
        DisjointConstraint,
        PartitionConstraint, 
        DomainConstraint,
        ForeignConstraint,
        QueryViews,
        BoolResolution, 
        Unsatisfiability,
        ViewParsing, 
    } 

    // This class holds some configuration information for the view 
    // generation code
    internal class ConfigViewGenerator : InternalBase {
        #region Constructors
        internal ConfigViewGenerator() { 
            m_watch = new Stopwatch();
            m_singleWatch = new Stopwatch(); 
            int numEnums = Enum.GetNames(typeof(PerfType)).Length; 
            m_breakdownTimes = new TimeSpan[numEnums];
            TraceLevel = ViewGenTraceLevel.None; 
            GenerateViewsForEachType = false;
            StartWatch();
        }
        #endregion 

        #region Fields 
        private bool m_generateViewsForEachType; 
        private ViewGenTraceLevel m_traceLevel;
        private TimeSpan[] m_breakdownTimes; 
        private Stopwatch m_watch;
        private Stopwatch m_singleWatch; // To measure a single thing at a time
        private PerfType m_singlePerfOp; // Perf op being measured
        private bool m_enableValidation = true; 
        #endregion
 
        #region Properties 
        // Callers can set elements in this list
        internal TimeSpan[] BreakdownTimes { 
            get { return m_breakdownTimes;}
        }

        internal ViewGenTraceLevel TraceLevel { 
            get { return m_traceLevel;}
            set {m_traceLevel = value;} 
        } 

        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 
        internal bool IsValidationEnabled
        {
            get { return m_enableValidation; }
            set { m_enableValidation = value; } 
        }
 
        internal bool GenerateViewsForEachType { 
            get { return m_generateViewsForEachType; }
            set { m_generateViewsForEachType = value; } 
        }

        internal bool IsViewTracing {
            get { return IsTraceAllowed(ViewGenTraceLevel.ViewsOnly);} 
        }
 
        internal bool IsNormalTracing { 
            get { return IsTraceAllowed(ViewGenTraceLevel.Normal);}
        } 

        internal bool IsVerboseTracing {
            get { return IsTraceAllowed(ViewGenTraceLevel.Verbose);}
        } 
        #endregion
 
        #region Methods 
        private void StartWatch() {
            m_watch.Start(); 
        }

        internal void StartSingleWatch(PerfType perfType) {
            m_singleWatch.Start(); 
            m_singlePerfOp = perfType;
        } 
 
        // effects: Sets time for perfType for the individual timer
        internal void StopSingleWatch(PerfType perfType) { 
            Debug.Assert(m_singlePerfOp == perfType, "Started op for different activity " + m_singlePerfOp + " -- not " + perfType);
            TimeSpan timeElapsed = m_singleWatch.Elapsed;
            int index = (int)perfType;
            m_singleWatch.Stop(); 
            m_singleWatch.Reset();
            BreakdownTimes[index] = BreakdownTimes[index].Add(timeElapsed); 
        } 

        // effects: Sets time for perfType since the last call to SetTimeForActivity 
        internal void SetTimeForFinishedActivity(PerfType perfType) {
            TimeSpan timeElapsed = m_watch.Elapsed;
            int index = (int)perfType;
            BreakdownTimes[index] = BreakdownTimes[index].Add(timeElapsed); 
            // Trace.WriteLine(perfType + " " + timeElapsed.TotalSeconds);
            m_watch.Reset(); 
            m_watch.Start(); 
        }
 
        // effects: Returns true if this's traceLevel is at least traceLevel
        internal bool IsTraceAllowed(ViewGenTraceLevel traceLevel) {
            return TraceLevel >= traceLevel;
        } 

        internal override void ToCompactString(StringBuilder builder) { 
            StringUtil.FormatStringBuilder(builder, "Trace Switch: {0}", m_traceLevel); 
        }
        #endregion 
    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.

                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK