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
- FileDialog_Vista.cs
- UInt16.cs
- WmfPlaceableFileHeader.cs
- RubberbandSelector.cs
- ArithmeticException.cs
- System.Data_BID.cs
- TcpProcessProtocolHandler.cs
- DigitShape.cs
- XmlSerializationReader.cs
- StandardCommands.cs
- AttributeEmitter.cs
- MessageQueueCriteria.cs
- MenuItemBindingCollection.cs
- EncoderBestFitFallback.cs
- UserControlDocumentDesigner.cs
- XmlEventCache.cs
- PropertyGridEditorPart.cs
- MasterPageParser.cs
- StorageEntityTypeMapping.cs
- HtmlTableCell.cs
- IEnumerable.cs
- MergablePropertyAttribute.cs
- DbProviderSpecificTypePropertyAttribute.cs
- SQLMembershipProvider.cs
- UserControlParser.cs
- PolygonHotSpot.cs
- DiagnosticTrace.cs
- AsyncContentLoadedEventArgs.cs
- WindowsListViewItemCheckBox.cs
- GacUtil.cs
- CTreeGenerator.cs
- GlyphRunDrawing.cs
- XsdDateTime.cs
- SuppressMessageAttribute.cs
- DataControlImageButton.cs
- RegexCharClass.cs
- ResourceReferenceExpression.cs
- FrameworkTextComposition.cs
- CodeDomLoader.cs
- SqlColumnizer.cs
- IIS7UserPrincipal.cs
- BatchServiceHost.cs
- Attachment.cs
- StylusTouchDevice.cs
- WebBrowserContainer.cs
- XamlRtfConverter.cs
- CodeCommentStatementCollection.cs
- XmlSchemaInclude.cs
- DataRow.cs
- HttpCapabilitiesEvaluator.cs
- ConnectionPointCookie.cs
- unsafenativemethodstextservices.cs
- StateMachineExecutionState.cs
- ExpressionEditorSheet.cs
- TextFragmentEngine.cs
- RightsManagementPermission.cs
- EditorZone.cs
- TextInfo.cs
- TextPatternIdentifiers.cs
- EUCJPEncoding.cs
- TextSpanModifier.cs
- UIElement3D.cs
- DiscoveryInnerClientAdhoc11.cs
- HtmlContainerControl.cs
- ASCIIEncoding.cs
- TrackingMemoryStream.cs
- MemberHolder.cs
- HebrewNumber.cs
- ChtmlImageAdapter.cs
- AudioFormatConverter.cs
- X509Certificate2Collection.cs
- WindowsAuthenticationEventArgs.cs
- OrderByBuilder.cs
- AccessDataSourceView.cs
- SendMailErrorEventArgs.cs
- KeyValueConfigurationCollection.cs
- Vector3DConverter.cs
- ValidationEventArgs.cs
- ChangeProcessor.cs
- TextEditorContextMenu.cs
- TextTreeInsertElementUndoUnit.cs
- ListBindingConverter.cs
- NavigateEvent.cs
- EditorPartChrome.cs
- ControlAdapter.cs
- WebResponse.cs
- SynchronizationContext.cs
- PopOutPanel.cs
- MaskInputRejectedEventArgs.cs
- OrderedEnumerableRowCollection.cs
- XmlLanguageConverter.cs
- NullableDoubleMinMaxAggregationOperator.cs
- ViewStateModeByIdAttribute.cs
- ScrollItemProviderWrapper.cs
- ExceptionWrapper.cs
- FastEncoder.cs
- Brush.cs
- XmlWrappingWriter.cs
- XsltConvert.cs
- NativeObjectSecurity.cs