SmiEventSink_DeferedProcessing.cs source code in C# .NET

Source code for the .NET framework in C#



/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Data / Microsoft / SqlServer / Server / SmiEventSink_DeferedProcessing.cs / 2 / SmiEventSink_DeferedProcessing.cs

//     Copyright (c) Microsoft Corporation.  All rights reserved.
// [....] 
// [....]
namespace Microsoft.SqlServer.Server {
    using System.Data.Sql;
    using System.Data.SqlClient;
    using System.Diagnostics;
    // This class exists purely to defer processing of messages until a later time.
    //  It is designed to allow calling common code that interacts with the SMI layers 
    //  without throwing or otherwise processing messages in the sink until later on. 
    //  Main example: 
    //      SqlCommand.ExecuteNonQuerySmi calls EventStream.ProcessEvent with it's command event sink (CES)
    //          ProcessEvent calls OnParametersAvailable on the CES
    //              OnParametersAvailable sets up a deferedprocessing event sink (DPES) with the CES as its parent
    //              OnParametersAvailable calls ValueUtils to extract param values passing the DPES 
    //                  ValueUtils calls Smi passing DPES
    //                      Smi may call MessagePosted, which will send a message up the sink parent chain and save it. 
    //                  ValueUtils calls ProcessMessagesAndThrow on DPES, which skips handling 
    //      ... return up the stack ...
    //      SqlCommand.ExecuteNonQuerySmi calls CES.ProcessMessagesAndThrow, which handles the messages 
    //              sent from the Smi value extraction code.
    //  IMPORTANT: Code that uses the DeferedProccess event sink is responsible for ensuring that
    //  these messages ARE processed at some point. 
    internal class SmiEventSink_DeferedProcessing : SmiEventSink_Default {
        internal SmiEventSink_DeferedProcessing ( SmiEventSink parent ) : base(parent) { 

        protected override void DispatchMessages(bool ignoreNonFatalMessages) { 
            // Skip processing messages.  Since messages are sent to parent and calling code will call
            //  ProcessMessages against parent, messages ARE NOT LOST!

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.


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