Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Data / Microsoft / SqlServer / Server / SmiEventSink.cs / 2 / SmiEventSink.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
// [....]
//-----------------------------------------------------------------------------
namespace Microsoft.SqlServer.Server {
using System;
using System.Data;
using System.Data.Sql;
// SqlEventSink is implemented by calling code. In all methods that accept
// a SqlEventSink directly the sink must be able to handle multiple callbacks
// without control returning from the original call.
// Methods that do not accept SmiEventSync are (generally) ProcessEvent on
// the SmiEventStream methods returning a SmiEventStream and methods that
// are certain to never call to the server (most will, for in-proc back end).
// Methods are commented with their corresponding TDS token
// NOTE: Throwing from these methods will not usually produce the desired
// effect -- the managed to native boundary will eat any exceptions,
// and will cause a simple "Something bad happened" exception to be
// thrown in the native to managed boundary...
internal abstract class SmiEventSink {
#region Active methods
// Called at end of stream whether errors or no
internal abstract void BatchCompleted( );
// Called zero or one time when output parameters are available (errors could prevent event from occuring)
internal virtual void ParameterAvailable(SmiParameterMetaData metaData, SmiTypedGetterSetter paramValue, int ordinal) {
// Adding as of V200
// Implement body with throw because there are only a couple of ways to get to this code:
// 1) Client is calling this method even though the server negotiated for V3- and hasn't implemented V200 yet.
// 2) Server didn't implement V200 on some interface, but negotiated V200+.
System.Data.Common.ADP.InternalError( System.Data.Common.ADP.InternalErrorCode.UnimplementedSMIMethod );
}
// Called when the server database context changes (ENVCHANGE token)
internal abstract void DefaultDatabaseChanged( string databaseName );
// Called for messages and errors (ERROR and INFO tokens)
internal abstract void MessagePosted ( int number, byte state, byte errorClass, string server, string message, string procedure, int lineNumber );
// Called for new resultset starting (COLMETADATA token)
internal abstract void MetaDataAvailable( SmiQueryMetaData[] metaData, bool nextEventIsRow );
internal virtual void RowAvailable(SmiTypedGetterSetter rowData) {
// Adding as of V200
// Implement body with throw because there are only a couple of ways to get to this code:
// 1) Client is calling this method even though the server negotiated for V3- and hasn't implemented V200 yet.
// 2) Server didn't implement V200 on some interface, but negotiated V200+.
System.Data.Common.ADP.InternalError( System.Data.Common.ADP.InternalErrorCode.UnimplementedSMIMethod );
}
// Called when any statement completes on server (DONE token)
internal abstract void StatementCompleted( int rowsAffected );
// Called when a transaction is commited (ENVCHANGE token)
internal abstract void TransactionCommitted( long transactionId );
// Called when a transaction is commited (ENVCHANGE token)
internal abstract void TransactionDefected( long transactionId );
// Called when a transaction is commited (ENVCHANGE token)
internal abstract void TransactionEnlisted( long transactionId );
// Called when a transaction is forcibly ended in the server, not requested
// by the provider's batch (ENVCHANGE token)
internal abstract void TransactionEnded( long transactionId );
// Called when a transaction is rolled back (ENVCHANGE token)
internal abstract void TransactionRolledBack( long transactionId );
// Called when a transaction is started (ENVCHANGE token)
internal abstract void TransactionStarted( long transactionId );
#endregion
#region OBSOLETE METHODS
#region OBSOLETED as of V200 but active in previous version
// Called zero or one time when output parameters are available (errors could prevent event from occuring)
internal virtual void ParametersAvailable( SmiParameterMetaData[] metaData, ITypedGettersV3 paramValues ) {
// Adding as of V3
// Obsoleting as of V200
// Implement body with throw because there are only a couple of ways to get to this code:
// 1) Client is calling this method even though the server negotiated for V200+ and dropped support for V200-.
// 2) Server didn't implement V3- on some interface and negotiated V3-.
System.Data.Common.ADP.InternalError( System.Data.Common.ADP.InternalErrorCode.UnimplementedSMIMethod );
}
// Called when a new row arrives (ROW token)
internal virtual void RowAvailable( ITypedGettersV3 rowData ) {
// Adding as of V3
// Obsoleting as of V200
// Implement body with throw because there are only a couple of ways to get to this code:
// 1) Client is calling this method even though the server negotiated for V200+ and dropped support for V200-.
// 2) Server didn't implement V3- on some interface and negotiated V3-.
System.Data.Common.ADP.InternalError( System.Data.Common.ADP.InternalErrorCode.UnimplementedSMIMethod );
}
#endregion
#region OBSOLETED and never shipped (without ObsoleteAttribute)
// Called when a new row arrives (ROW token)
internal virtual void RowAvailable( ITypedGetters rowData ) {
// Obsoleting from SMI -- use end of dispose that takes an event sink instead.
// Intended to be removed (along with inheriting IDisposable) prior to RTM.
// Implement body with throw because there are only a couple of ways to get to this code:
// 1) Client is calling this method even though the server negotiated for V3+ and dropped support for V2-.
// 2) Server didn't implement V2- on some interface and negotiated V2-.
System.Data.Common.ADP.InternalError( System.Data.Common.ADP.InternalErrorCode.UnimplementedSMIMethod );
}
#endregion
#endregion
}
}
// 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
- OdbcConnectionStringbuilder.cs
- CurrentChangingEventArgs.cs
- LazyLoadBehavior.cs
- RpcResponse.cs
- CallbackCorrelationInitializer.cs
- SupportingTokenParameters.cs
- ListViewGroupCollectionEditor.cs
- SqlCacheDependencyDatabaseCollection.cs
- Expressions.cs
- ArgIterator.cs
- OletxEnlistment.cs
- FastEncoder.cs
- HWStack.cs
- EmptyEnumerator.cs
- CodeDomComponentSerializationService.cs
- TaiwanLunisolarCalendar.cs
- StatusBarDrawItemEvent.cs
- isolationinterop.cs
- ProfileInfo.cs
- ValidatorCollection.cs
- ApplicationServicesHostFactory.cs
- DesignerImageAdapter.cs
- IteratorDescriptor.cs
- CodeDefaultValueExpression.cs
- ToolboxComponentsCreatedEventArgs.cs
- DesignerProperties.cs
- Stack.cs
- PointLight.cs
- TriState.cs
- DrawingContextFlattener.cs
- DoubleLinkList.cs
- RemotingSurrogateSelector.cs
- SemanticBasicElement.cs
- MetadataWorkspace.cs
- Utils.cs
- Parallel.cs
- IdentityNotMappedException.cs
- RowTypePropertyElement.cs
- ChildTable.cs
- X509CertificateClaimSet.cs
- ProviderIncompatibleException.cs
- NotSupportedException.cs
- DateTimePicker.cs
- ComponentEditorForm.cs
- ReservationNotFoundException.cs
- MessageEncoder.cs
- SqlDataSource.cs
- CSharpCodeProvider.cs
- ObjectDataSourceFilteringEventArgs.cs
- NullableDoubleMinMaxAggregationOperator.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- AutomationElementCollection.cs
- InnerItemCollectionView.cs
- BaseTemplateCodeDomTreeGenerator.cs
- CompareInfo.cs
- BitmapCodecInfoInternal.cs
- DelegatingHeader.cs
- BindingContext.cs
- RuntimeEnvironment.cs
- XmlElementCollection.cs
- OleDbDataReader.cs
- ComEventsInfo.cs
- AuthenticateEventArgs.cs
- EndpointAddressElementBase.cs
- ThreadExceptionEvent.cs
- CustomCategoryAttribute.cs
- BidOverLoads.cs
- ManifestResourceInfo.cs
- ParameterBuilder.cs
- Message.cs
- DBDataPermissionAttribute.cs
- COSERVERINFO.cs
- NameTable.cs
- ProvidersHelper.cs
- TableTextElementCollectionInternal.cs
- ObsoleteAttribute.cs
- Converter.cs
- ConvertersCollection.cs
- TabControl.cs
- TextElementEnumerator.cs
- RelativeSource.cs
- WebScriptServiceHost.cs
- ProcessHostMapPath.cs
- ControlBuilderAttribute.cs
- VisualStyleInformation.cs
- SqlDataAdapter.cs
- ProjectionPruner.cs
- CompilerGlobalScopeAttribute.cs
- KerberosRequestorSecurityToken.cs
- _SslSessionsCache.cs
- Fx.cs
- DependencyObjectPropertyDescriptor.cs
- CheckBoxField.cs
- GeneralTransform3D.cs
- ToolConsole.cs
- DesignerAttribute.cs
- String.cs
- ConnectionStringSettingsCollection.cs
- EncryptedType.cs
- srgsitem.cs