Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / Data / System / Data / SqlClient / TdsRecordBufferSetter.cs / 1 / 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
- ModuleBuilder.cs
- TemplateBindingExpression.cs
- EnumMember.cs
- QueryContinueDragEvent.cs
- XsltSettings.cs
- TaskHelper.cs
- RealizationContext.cs
- MissingFieldException.cs
- GeometryDrawing.cs
- ProfileProvider.cs
- ToolBar.cs
- ResourceManagerWrapper.cs
- ServiceModelPerformanceCounters.cs
- XmlToDatasetMap.cs
- HashMembershipCondition.cs
- DataGridViewRowEventArgs.cs
- LocationSectionRecord.cs
- HtmlHead.cs
- PeerResolverSettings.cs
- ForwardPositionQuery.cs
- WebPartMinimizeVerb.cs
- DomainLiteralReader.cs
- DBSqlParser.cs
- DesigntimeLicenseContext.cs
- PagerSettings.cs
- IPGlobalProperties.cs
- CompositeFontParser.cs
- BaseResourcesBuildProvider.cs
- Unit.cs
- SystemIPAddressInformation.cs
- TemplateParser.cs
- MsmqHostedTransportConfiguration.cs
- ExtractorMetadata.cs
- TraceData.cs
- PropertyPathWorker.cs
- ScrollItemPatternIdentifiers.cs
- safex509handles.cs
- AlphabeticalEnumConverter.cs
- LayoutEditorPart.cs
- StorageMappingFragment.cs
- StrokeNodeEnumerator.cs
- JumpItem.cs
- CryptoKeySecurity.cs
- BoundPropertyEntry.cs
- LinearGradientBrush.cs
- odbcmetadatafactory.cs
- RoutingService.cs
- SimpleRecyclingCache.cs
- CustomErrorCollection.cs
- ControlEvent.cs
- IndentedTextWriter.cs
- PixelFormatConverter.cs
- BitmapEffectGroup.cs
- ColumnMapVisitor.cs
- TransactionalPackage.cs
- UnsafeNativeMethods.cs
- RadioButtonFlatAdapter.cs
- Delegate.cs
- HandlerFactoryCache.cs
- LocalServiceSecuritySettingsElement.cs
- GrammarBuilderWildcard.cs
- oledbmetadatacollectionnames.cs
- DataObjectCopyingEventArgs.cs
- DataServiceKeyAttribute.cs
- DesignerLoader.cs
- DefaultMemberAttribute.cs
- OdbcRowUpdatingEvent.cs
- NativeMethods.cs
- UserControlFileEditor.cs
- HttpsHostedTransportConfiguration.cs
- ContainerUIElement3D.cs
- DirectionalLight.cs
- CreateUserWizardStep.cs
- CustomErrorsSectionWrapper.cs
- StorageEndPropertyMapping.cs
- ElementInit.cs
- ColumnHeaderCollectionEditor.cs
- SequentialUshortCollection.cs
- RequestCachingSection.cs
- OperationCanceledException.cs
- CancelRequestedRecord.cs
- SortKey.cs
- ReachDocumentPageSerializerAsync.cs
- ContentFilePart.cs
- FilterableAttribute.cs
- ManifestSignedXml.cs
- LinqDataSourceValidationException.cs
- DoubleCollection.cs
- TypeGenericEnumerableViewSchema.cs
- Size3D.cs
- SystemIcmpV4Statistics.cs
- PageTheme.cs
- ObjectRef.cs
- DefaultValueMapping.cs
- ArgumentException.cs
- ReflectionPermission.cs
- Matrix3DConverter.cs
- Vector3DConverter.cs
- shaperfactoryquerycachekey.cs
- SplitterPanel.cs