Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ModifyActivitiesPropertyDescriptor.cs
- ProviderIncompatibleException.cs
- WindowClosedEventArgs.cs
- ModelItemKeyValuePair.cs
- FunctionDescription.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- PageThemeBuildProvider.cs
- TransformValueSerializer.cs
- followingquery.cs
- FtpWebResponse.cs
- DataBoundLiteralControl.cs
- BitmapCodecInfoInternal.cs
- DuplexChannelBinder.cs
- SecurityTokenTypes.cs
- PhoneCallDesigner.cs
- XmlConverter.cs
- UnsafeNativeMethods.cs
- DataGridViewButtonColumn.cs
- DeobfuscatingStream.cs
- DigestComparer.cs
- PropertyGridView.cs
- CustomActivityDesigner.cs
- SqlSupersetValidator.cs
- MultiDataTrigger.cs
- FixedHyperLink.cs
- SafeThreadHandle.cs
- SignatureGenerator.cs
- OciEnlistContext.cs
- Latin1Encoding.cs
- LabelTarget.cs
- CommandSet.cs
- UITypeEditor.cs
- CssTextWriter.cs
- LockedAssemblyCache.cs
- HMACSHA384.cs
- FrameworkContentElement.cs
- WebBrowserProgressChangedEventHandler.cs
- AspCompat.cs
- MetaModel.cs
- PersonalizationState.cs
- ThumbAutomationPeer.cs
- SafeWaitHandle.cs
- CountAggregationOperator.cs
- SerializationException.cs
- DataGridViewTextBoxColumn.cs
- XmlElementCollection.cs
- DeferredReference.cs
- OfTypeExpression.cs
- SqlUtils.cs
- WebPartManagerInternals.cs
- AssemblyFilter.cs
- NewItemsContextMenuStrip.cs
- PermissionSetTriple.cs
- AuthorizationSection.cs
- FrameworkElementAutomationPeer.cs
- SyndicationFeedFormatter.cs
- RC2CryptoServiceProvider.cs
- InfoCardSymmetricAlgorithm.cs
- TextElementAutomationPeer.cs
- ObfuscationAttribute.cs
- ModulesEntry.cs
- KeyProperty.cs
- ObjectListFieldCollection.cs
- PageContent.cs
- MonthCalendar.cs
- EventlogProvider.cs
- BaseConfigurationRecord.cs
- SessionEndingCancelEventArgs.cs
- PreProcessInputEventArgs.cs
- TemplateControlBuildProvider.cs
- DocumentGridPage.cs
- CodeExpressionStatement.cs
- SqlDesignerDataSourceView.cs
- MetabaseReader.cs
- MembershipPasswordException.cs
- SqlDataSourceView.cs
- PassportAuthenticationModule.cs
- SrgsToken.cs
- StartUpEventArgs.cs
- InvalidEnumArgumentException.cs
- CultureData.cs
- DefaultAsyncDataDispatcher.cs
- WebPartConnectionsEventArgs.cs
- Models.cs
- ExpandCollapseProviderWrapper.cs
- TextProperties.cs
- InfoCardX509Validator.cs
- FileLoadException.cs
- UpDownBase.cs
- ObjectHandle.cs
- ToolStripActionList.cs
- HtmlDocument.cs
- MenuItemStyleCollection.cs
- Int32RectValueSerializer.cs
- ReservationCollection.cs
- ObjectItemCachedAssemblyLoader.cs
- RootBuilder.cs
- BooleanAnimationUsingKeyFrames.cs
- OracleBinary.cs
- SQLRoleProvider.cs