Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / Data / System / Data / SqlClient / TdsRecordBufferSetter.cs / 4 / TdsRecordBufferSetter.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data.SqlClient { using Microsoft.SqlServer.Server; using System; using System.Data; using System.Data.SqlClient; using System.Diagnostics; using System.Data.SqlTypes; // TdsRecordBufferSetter handles writing a structured value out to a TDS stream internal class TdsRecordBufferSetter : SmiRecordBuffer { #region Fields (private) private TdsValueSetter[] _fieldSetters; // setters for individual fields private TdsParserStateObject _stateObj; // target to write to private SmiMetaData _metaData; // metadata describing value #if DEBUG private const int ReadyForToken = -1; // must call new/end element next private const int EndElementsCalled = -2; // already called EndElements, can only call Close private const int Closed = -3; // closed (zombied) private int _currentField; // validate that caller sets columns in correct order. #endif #endregion #region Exposed Construct and control methods/properties internal TdsRecordBufferSetter(TdsParserStateObject stateObj, SmiMetaData md) { Debug.Assert(SqlDbType.Structured == md.SqlDbType, "Unsupported SqlDbType: " + md.SqlDbType); _fieldSetters = new TdsValueSetter[md.FieldMetaData.Count]; for(int i=0; i_currentField, "_currentField out of range for setting a column:" + _currentField); Debug.Assert(ordinal == _currentField, "Setter called out of order. Should be " + _currentField + ", but was " + ordinal); // Must not write to field with a DefaultFieldsProperty set to true Debug.Assert(!((SmiDefaultFieldsProperty)_metaData.ExtendedProperties[SmiPropertySelector.DefaultFields])[ordinal], "Attempt to write to a default-valued field: " + ordinal); #endif } // Handle logic of skipping default columns [Conditional("DEBUG")] private void SkipPossibleDefaultedColumns(int targetColumn) { #if DEBUG Debug.Assert(targetColumn < _metaData.FieldMetaData.Count && targetColumn >= ReadyForToken, "TdsRecordBufferSetter.SkipPossibleDefaultedColumns: Invalid target column: " + targetColumn); // special setup for ReadyForToken as the target if (targetColumn == ReadyForToken) { if (ReadyForToken == _currentField) { return; } // Handle readyfortoken by using count of columns in the loop. targetColumn = _metaData.FieldMetaData.Count; } // Handle skipping default-valued fields while (targetColumn > _currentField) { // All intermediate fields must be default fields (i.e. have a "true" entry in SmiDefaultFieldsProperty Debug.Assert(((SmiDefaultFieldsProperty)_metaData.ExtendedProperties[SmiPropertySelector.DefaultFields])[_currentField], "Skipping a field that was not default: " + _currentField); _currentField++; } if (_metaData.FieldMetaData.Count == _currentField) { _currentField = ReadyForToken; } #endif } [Conditional("DEBUG")] internal void CheckSettingColumn(int ordinal) { #if DEBUG // Make sure target column can be written to. CheckWritingToColumn(ordinal); _currentField++; if (_metaData.FieldMetaData.Count == _currentField) { _currentField = ReadyForToken; } #endif } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- namespace System.Data.SqlClient { using Microsoft.SqlServer.Server; using System; using System.Data; using System.Data.SqlClient; using System.Diagnostics; using System.Data.SqlTypes; // TdsRecordBufferSetter handles writing a structured value out to a TDS stream internal class TdsRecordBufferSetter : SmiRecordBuffer { #region Fields (private) private TdsValueSetter[] _fieldSetters; // setters for individual fields private TdsParserStateObject _stateObj; // target to write to private SmiMetaData _metaData; // metadata describing value #if DEBUG private const int ReadyForToken = -1; // must call new/end element next private const int EndElementsCalled = -2; // already called EndElements, can only call Close private const int Closed = -3; // closed (zombied) private int _currentField; // validate that caller sets columns in correct order. #endif #endregion #region Exposed Construct and control methods/properties internal TdsRecordBufferSetter(TdsParserStateObject stateObj, SmiMetaData md) { Debug.Assert(SqlDbType.Structured == md.SqlDbType, "Unsupported SqlDbType: " + md.SqlDbType); _fieldSetters = new TdsValueSetter[md.FieldMetaData.Count]; for(int i=0; i_currentField, "_currentField out of range for setting a column:" + _currentField); Debug.Assert(ordinal == _currentField, "Setter called out of order. Should be " + _currentField + ", but was " + ordinal); // Must not write to field with a DefaultFieldsProperty set to true Debug.Assert(!((SmiDefaultFieldsProperty)_metaData.ExtendedProperties[SmiPropertySelector.DefaultFields])[ordinal], "Attempt to write to a default-valued field: " + ordinal); #endif } // Handle logic of skipping default columns [Conditional("DEBUG")] private void SkipPossibleDefaultedColumns(int targetColumn) { #if DEBUG Debug.Assert(targetColumn < _metaData.FieldMetaData.Count && targetColumn >= ReadyForToken, "TdsRecordBufferSetter.SkipPossibleDefaultedColumns: Invalid target column: " + targetColumn); // special setup for ReadyForToken as the target if (targetColumn == ReadyForToken) { if (ReadyForToken == _currentField) { return; } // Handle readyfortoken by using count of columns in the loop. targetColumn = _metaData.FieldMetaData.Count; } // Handle skipping default-valued fields while (targetColumn > _currentField) { // All intermediate fields must be default fields (i.e. have a "true" entry in SmiDefaultFieldsProperty Debug.Assert(((SmiDefaultFieldsProperty)_metaData.ExtendedProperties[SmiPropertySelector.DefaultFields])[_currentField], "Skipping a field that was not default: " + _currentField); _currentField++; } if (_metaData.FieldMetaData.Count == _currentField) { _currentField = ReadyForToken; } #endif } [Conditional("DEBUG")] internal void CheckSettingColumn(int ordinal) { #if DEBUG // Make sure target column can be written to. CheckWritingToColumn(ordinal); _currentField++; if (_metaData.FieldMetaData.Count == _currentField) { _currentField = ReadyForToken; } #endif } #endregion } } // 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
- NativeStructs.cs
- WindowsGraphicsWrapper.cs
- StubHelpers.cs
- JournalNavigationScope.cs
- XomlCompiler.cs
- WebZoneDesigner.cs
- BitmapEffectCollection.cs
- AnimatedTypeHelpers.cs
- ListBase.cs
- FileRegion.cs
- WebPartExportVerb.cs
- NetworkStream.cs
- Util.cs
- TextTreeRootNode.cs
- ObjectTokenCategory.cs
- UnsafeNativeMethods.cs
- Rect3D.cs
- BooleanProjectedSlot.cs
- PrimaryKeyTypeConverter.cs
- Quaternion.cs
- ViewCellRelation.cs
- NetworkInformationException.cs
- SiteMapDataSourceDesigner.cs
- Dictionary.cs
- TypefaceMap.cs
- SmiEventStream.cs
- Italic.cs
- SqlInternalConnection.cs
- SqlClientWrapperSmiStream.cs
- TypePresenter.xaml.cs
- xmlglyphRunInfo.cs
- CodePrimitiveExpression.cs
- AncillaryOps.cs
- TextHidden.cs
- Int32.cs
- PaperSource.cs
- GridViewDeleteEventArgs.cs
- Int32.cs
- DbConnectionClosed.cs
- ReflectionTypeLoadException.cs
- AnnotationHighlightLayer.cs
- TransportChannelListener.cs
- TypeInitializationException.cs
- TranslateTransform.cs
- embossbitmapeffect.cs
- TimersDescriptionAttribute.cs
- ComboBox.cs
- NamespaceEmitter.cs
- WebPartAuthorizationEventArgs.cs
- DataGridSortCommandEventArgs.cs
- GridProviderWrapper.cs
- NotifyParentPropertyAttribute.cs
- ImageSource.cs
- LoginView.cs
- ICspAsymmetricAlgorithm.cs
- ImmComposition.cs
- KeyPressEvent.cs
- QueryOptionExpression.cs
- ApplicationManager.cs
- PartBasedPackageProperties.cs
- RequestTimeoutManager.cs
- Reference.cs
- HMACMD5.cs
- dsa.cs
- ScrollPatternIdentifiers.cs
- ToolboxItemCollection.cs
- TcpChannelListener.cs
- MembershipValidatePasswordEventArgs.cs
- Event.cs
- AspNetSynchronizationContext.cs
- BoundColumn.cs
- EntityDataSourceContextCreatingEventArgs.cs
- GlobalItem.cs
- RegexCaptureCollection.cs
- Soap12FormatExtensions.cs
- HttpAsyncResult.cs
- SHA1Managed.cs
- CallContext.cs
- DockPanel.cs
- TextWriterEngine.cs
- DataPagerCommandEventArgs.cs
- AllMembershipCondition.cs
- MenuItem.cs
- NetTcpSectionData.cs
- ClientFormsAuthenticationCredentials.cs
- NullableLongAverageAggregationOperator.cs
- XmlnsPrefixAttribute.cs
- IBuiltInEvidence.cs
- JulianCalendar.cs
- DateTimeFormatInfoScanner.cs
- AvTrace.cs
- StorageRoot.cs
- AlphabeticalEnumConverter.cs
- BinaryMethodMessage.cs
- ReachDocumentReferenceSerializerAsync.cs
- CacheDependency.cs
- BindableAttribute.cs
- ClientConfigPaths.cs
- ScrollViewer.cs
- TextControlDesigner.cs