Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / Data / Microsoft / SqlServer / Server / sqlcontext.cs / 1 / sqlcontext.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //daltodov //----------------------------------------------------------------------------- namespace Microsoft.SqlServer.Server { using System; using System.Data.Common; using System.Data.SqlClient; using System.Data.SqlTypes; using System.Diagnostics; using System.Security.Principal; #if WINFSInternalOnly internal #else public #endif sealed class SqlContext { // There are no publicly visible instance methods/properties on SqlContext. // With the current design, the user should never get an actual instance of // this class. Instances are only used internally to hold owned objects // such as SqlPipe and SqlTriggerContext. private SmiContext _smiContext; private SqlPipe _pipe; private SqlTriggerContext _triggerContext; private SqlContext( SmiContext smiContext ) { _smiContext = smiContext; _smiContext.OutOfScope += new EventHandler(OnOutOfScope); } // // Public API // public static bool IsAvailable { get { bool result = InOutOfProcHelper.InProc; return result; } } // Get the SqlPipe (if any) for the current scope. public static SqlPipe Pipe { get { return CurrentContext.InstancePipe; } } // Get the SqlTriggerContext (if any) for the current scope. public static SqlTriggerContext TriggerContext { get { return CurrentContext.InstanceTriggerContext; } } public static WindowsIdentity WindowsIdentity{ get { return CurrentContext.InstanceWindowsIdentity; } } // // Internal class methods // // CurrentContext should be the *only* way to get to an instance of SqlContext. private static SqlContext CurrentContext { get { SmiContext smiContext = SmiContextFactory.Instance.GetCurrentContext(); SqlContext result = (SqlContext)smiContext.GetContextValue( (int)SmiContextFactory.ContextKey.SqlContext ); if ( null == result ) { result = new SqlContext( smiContext ); smiContext.SetContextValue( (int)SmiContextFactory.ContextKey.SqlContext, result ); } return result; } } // // Internal instance methods // private SqlPipe InstancePipe { get { if ( null == _pipe && _smiContext.HasContextPipe ) { _pipe = new SqlPipe( _smiContext ); } Debug.Assert( null == _pipe || _smiContext.HasContextPipe, "Caching logic error for contained pipe!" ); return _pipe; } } private SqlTriggerContext InstanceTriggerContext { get { if ( null == _triggerContext ) { bool[] columnsUpdated; TriggerAction triggerAction; SqlXml eventInstanceData; SmiEventSink_Default eventSink = new SmiEventSink_Default(); _smiContext.GetTriggerInfo(eventSink, out columnsUpdated, out triggerAction, out eventInstanceData); eventSink.ProcessMessagesAndThrow(); if (TriggerAction.Invalid != triggerAction) { _triggerContext = new SqlTriggerContext( triggerAction, columnsUpdated, eventInstanceData ); } } return _triggerContext; } } private WindowsIdentity InstanceWindowsIdentity { get { return _smiContext.WindowsIdentity; } } // Called whenever the context goes out of scope, we need to make // sure that we release internal state, such as the pipe's record buffer private void OnOutOfScope( object s, EventArgs e ) { if (Bid.AdvancedOn) { Bid.Trace( "SqlContext is out of scope\n" ); } if ( null != _pipe ) { _pipe.OnOutOfScope(); } _triggerContext = null; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //daltodov //----------------------------------------------------------------------------- namespace Microsoft.SqlServer.Server { using System; using System.Data.Common; using System.Data.SqlClient; using System.Data.SqlTypes; using System.Diagnostics; using System.Security.Principal; #if WINFSInternalOnly internal #else public #endif sealed class SqlContext { // There are no publicly visible instance methods/properties on SqlContext. // With the current design, the user should never get an actual instance of // this class. Instances are only used internally to hold owned objects // such as SqlPipe and SqlTriggerContext. private SmiContext _smiContext; private SqlPipe _pipe; private SqlTriggerContext _triggerContext; private SqlContext( SmiContext smiContext ) { _smiContext = smiContext; _smiContext.OutOfScope += new EventHandler(OnOutOfScope); } // // Public API // public static bool IsAvailable { get { bool result = InOutOfProcHelper.InProc; return result; } } // Get the SqlPipe (if any) for the current scope. public static SqlPipe Pipe { get { return CurrentContext.InstancePipe; } } // Get the SqlTriggerContext (if any) for the current scope. public static SqlTriggerContext TriggerContext { get { return CurrentContext.InstanceTriggerContext; } } public static WindowsIdentity WindowsIdentity{ get { return CurrentContext.InstanceWindowsIdentity; } } // // Internal class methods // // CurrentContext should be the *only* way to get to an instance of SqlContext. private static SqlContext CurrentContext { get { SmiContext smiContext = SmiContextFactory.Instance.GetCurrentContext(); SqlContext result = (SqlContext)smiContext.GetContextValue( (int)SmiContextFactory.ContextKey.SqlContext ); if ( null == result ) { result = new SqlContext( smiContext ); smiContext.SetContextValue( (int)SmiContextFactory.ContextKey.SqlContext, result ); } return result; } } // // Internal instance methods // private SqlPipe InstancePipe { get { if ( null == _pipe && _smiContext.HasContextPipe ) { _pipe = new SqlPipe( _smiContext ); } Debug.Assert( null == _pipe || _smiContext.HasContextPipe, "Caching logic error for contained pipe!" ); return _pipe; } } private SqlTriggerContext InstanceTriggerContext { get { if ( null == _triggerContext ) { bool[] columnsUpdated; TriggerAction triggerAction; SqlXml eventInstanceData; SmiEventSink_Default eventSink = new SmiEventSink_Default(); _smiContext.GetTriggerInfo(eventSink, out columnsUpdated, out triggerAction, out eventInstanceData); eventSink.ProcessMessagesAndThrow(); if (TriggerAction.Invalid != triggerAction) { _triggerContext = new SqlTriggerContext( triggerAction, columnsUpdated, eventInstanceData ); } } return _triggerContext; } } private WindowsIdentity InstanceWindowsIdentity { get { return _smiContext.WindowsIdentity; } } // Called whenever the context goes out of scope, we need to make // sure that we release internal state, such as the pipe's record buffer private void OnOutOfScope( object s, EventArgs e ) { if (Bid.AdvancedOn) { Bid.Trace( "SqlContext is out of scope\n" ); } if ( null != _pipe ) { _pipe.OnOutOfScope(); } _triggerContext = null; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- LocatorPart.cs
- CodeDOMUtility.cs
- DocumentApplicationJournalEntry.cs
- ChameleonKey.cs
- SourceFileInfo.cs
- Size3D.cs
- PolicyManager.cs
- SqlServer2KCompatibilityCheck.cs
- RequestQueryProcessor.cs
- Group.cs
- StateMachineWorkflowInstance.cs
- CodeSnippetCompileUnit.cs
- MouseGesture.cs
- OletxTransactionFormatter.cs
- WorkItem.cs
- PenContexts.cs
- MachineKeyValidationConverter.cs
- Module.cs
- BoolExpression.cs
- XamlStyleSerializer.cs
- StackBuilderSink.cs
- ListManagerBindingsCollection.cs
- JournalEntry.cs
- XmlEncoding.cs
- XhtmlBasicImageAdapter.cs
- InternalCache.cs
- HttpResponseInternalWrapper.cs
- UIPermission.cs
- SapiInterop.cs
- ReadOnlyCollection.cs
- HashAlgorithm.cs
- FormViewAutoFormat.cs
- SqlStatistics.cs
- FileDetails.cs
- DecimalAnimation.cs
- SqlTriggerContext.cs
- XPathChildIterator.cs
- URLMembershipCondition.cs
- GcHandle.cs
- TraceEventCache.cs
- ApplicationException.cs
- WmlLinkAdapter.cs
- MsmqChannelListenerBase.cs
- StyleCollection.cs
- AccessibleObject.cs
- OverflowException.cs
- PolicyValidationException.cs
- ProgressChangedEventArgs.cs
- ParameterModifier.cs
- OdbcParameterCollection.cs
- HitTestWithPointDrawingContextWalker.cs
- DataBoundControlAdapter.cs
- GenericAuthenticationEventArgs.cs
- DocumentAutomationPeer.cs
- BitmapVisualManager.cs
- MSAAEventDispatcher.cs
- EventManager.cs
- CacheAxisQuery.cs
- XPathMultyIterator.cs
- DesignerLabelAdapter.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- Component.cs
- IndexedGlyphRun.cs
- baseaxisquery.cs
- LogReserveAndAppendState.cs
- SqlCacheDependencyDatabaseCollection.cs
- HttpCookieCollection.cs
- PowerStatus.cs
- WindowsIPAddress.cs
- TranslateTransform3D.cs
- _AutoWebProxyScriptEngine.cs
- EmptyElement.cs
- ImageAttributes.cs
- JapaneseLunisolarCalendar.cs
- SqlConnectionPoolProviderInfo.cs
- ObjectQuery_EntitySqlExtensions.cs
- EditorServiceContext.cs
- IdentityManager.cs
- TaiwanLunisolarCalendar.cs
- PopupEventArgs.cs
- Triplet.cs
- RecipientInfo.cs
- RulePatternOps.cs
- HostSecurityManager.cs
- ResourcePart.cs
- SubstitutionList.cs
- OleDbStruct.cs
- DesignerAutoFormat.cs
- CacheDependency.cs
- ControlCommandSet.cs
- ScrollData.cs
- FieldNameLookup.cs
- WCFModelStrings.Designer.cs
- OdbcRowUpdatingEvent.cs
- ScaleTransform3D.cs
- MetadataSource.cs
- OperandQuery.cs
- ColorConverter.cs
- TraceHandlerErrorFormatter.cs
- Message.cs