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
- WCFBuildProvider.cs
- HostSecurityManager.cs
- Crc32Helper.cs
- TypeBinaryExpression.cs
- JsonXmlDataContract.cs
- DataGridViewCellConverter.cs
- DateTimeConstantAttribute.cs
- IRCollection.cs
- XmlSchemaAppInfo.cs
- UnmanagedMemoryStream.cs
- SettingsSection.cs
- AnimationStorage.cs
- DropShadowEffect.cs
- BinaryUtilClasses.cs
- RtfNavigator.cs
- MemberProjectedSlot.cs
- FontUnitConverter.cs
- SqlNodeAnnotation.cs
- PopupRoot.cs
- XmlDataSourceView.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- Int32Collection.cs
- DecoderFallback.cs
- CodeDOMUtility.cs
- IdentityNotMappedException.cs
- Util.cs
- ToolTipService.cs
- DateRangeEvent.cs
- SvcMapFileLoader.cs
- EventSourceCreationData.cs
- BoundPropertyEntry.cs
- ProgressBar.cs
- MailHeaderInfo.cs
- VectorAnimationUsingKeyFrames.cs
- DateRangeEvent.cs
- PrinterUnitConvert.cs
- WebPartDisplayModeEventArgs.cs
- XmlWriterDelegator.cs
- GridItemPatternIdentifiers.cs
- DefaultBinder.cs
- EventToken.cs
- SystemException.cs
- StreamMarshaler.cs
- DebugTrace.cs
- ObjectDataSourceSelectingEventArgs.cs
- DbBuffer.cs
- ConnectionString.cs
- Deserializer.cs
- BamlTreeUpdater.cs
- HTTPNotFoundHandler.cs
- HtmlSelect.cs
- ZipIOBlockManager.cs
- PolicyValidationException.cs
- CodeObjectCreateExpression.cs
- ControlCollection.cs
- LineGeometry.cs
- EmbeddedMailObject.cs
- DataConnectionHelper.cs
- BulletChrome.cs
- ItemCheckEvent.cs
- QilXmlReader.cs
- XmlSchemaSimpleContentExtension.cs
- DrawingContextDrawingContextWalker.cs
- AppLevelCompilationSectionCache.cs
- ObjectDataSourceMethodEditor.cs
- RelationshipDetailsRow.cs
- RootBrowserWindow.cs
- XmlBindingWorker.cs
- Resources.Designer.cs
- AccessText.cs
- CompilerError.cs
- _HelperAsyncResults.cs
- BinaryReader.cs
- StrongNameUtility.cs
- controlskin.cs
- SystemColors.cs
- ToolStripContentPanelRenderEventArgs.cs
- RenderData.cs
- RewritingProcessor.cs
- infer.cs
- NotifyCollectionChangedEventArgs.cs
- GeneralTransformGroup.cs
- sortedlist.cs
- SafeFileMappingHandle.cs
- EnterpriseServicesHelper.cs
- WebEvents.cs
- COM2PropertyDescriptor.cs
- DispatcherSynchronizationContext.cs
- FamilyMapCollection.cs
- ErrorFormatter.cs
- ConfigurationElementProperty.cs
- MappingModelBuildProvider.cs
- Vector3DConverter.cs
- MasterPageParser.cs
- ExpressionEditorAttribute.cs
- Wildcard.cs
- InfoCardSymmetricAlgorithm.cs
- RenderContext.cs
- SignedXml.cs
- SystemIcmpV4Statistics.cs