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
- RadialGradientBrush.cs
- LassoHelper.cs
- GridView.cs
- XmlSchemaObjectTable.cs
- TimeSpanMinutesConverter.cs
- ResolvedKeyFrameEntry.cs
- Asn1IntegerConverter.cs
- KnownAssemblyEntry.cs
- TemplateInstanceAttribute.cs
- SQLInt16Storage.cs
- ViewLoader.cs
- Utils.cs
- EncodingInfo.cs
- Relationship.cs
- TemplateComponentConnector.cs
- RowType.cs
- BrowserTree.cs
- ActivationServices.cs
- WebInvokeAttribute.cs
- SmtpClient.cs
- ParserContext.cs
- CharEntityEncoderFallback.cs
- PathFigureCollectionConverter.cs
- XmlSchemaChoice.cs
- DataGridColumn.cs
- Int32AnimationUsingKeyFrames.cs
- ListViewSortEventArgs.cs
- MetadataFile.cs
- SqlDataSourceSelectingEventArgs.cs
- KeyedCollection.cs
- SecurityTokenContainer.cs
- EntitySetBaseCollection.cs
- IISUnsafeMethods.cs
- NativeStructs.cs
- SafeUserTokenHandle.cs
- _HeaderInfo.cs
- AlternateViewCollection.cs
- RequestCache.cs
- SqlNamer.cs
- PathFigureCollection.cs
- TextElementEnumerator.cs
- DataGridViewRowCollection.cs
- InputQueue.cs
- DynamicILGenerator.cs
- MethodExpr.cs
- Odbc32.cs
- UriSection.cs
- VariantWrapper.cs
- RequestQueue.cs
- AccessibleObject.cs
- SignedInfo.cs
- MailMessageEventArgs.cs
- HtmlValidatorAdapter.cs
- SystemIcmpV4Statistics.cs
- SchemaObjectWriter.cs
- ProjectionAnalyzer.cs
- LogManagementAsyncResult.cs
- WindowShowOrOpenTracker.cs
- InternalBufferOverflowException.cs
- ToolStripSystemRenderer.cs
- EntityDataSourceWizardForm.cs
- _NetRes.cs
- SqlColumnizer.cs
- PatternMatcher.cs
- MultiTrigger.cs
- SafeNativeMethodsMilCoreApi.cs
- InkPresenter.cs
- ObjectStateManagerMetadata.cs
- remotingproxy.cs
- PathSegmentCollection.cs
- TextRenderingModeValidation.cs
- AttachedProperty.cs
- SmtpSection.cs
- ApplicationBuildProvider.cs
- StaticSiteMapProvider.cs
- InputManager.cs
- FakeModelItemImpl.cs
- EditorPartDesigner.cs
- MSAANativeProvider.cs
- PropertyPushdownHelper.cs
- TrustLevel.cs
- Tablet.cs
- UpdateTranslator.cs
- HtmlInputControl.cs
- BamlLocalizabilityResolver.cs
- AsyncCallback.cs
- IISUnsafeMethods.cs
- SectionVisual.cs
- CodeDOMUtility.cs
- WebMethodAttribute.cs
- DataViewSetting.cs
- ConfigurationErrorsException.cs
- VSWCFServiceContractGenerator.cs
- LinkedDataMemberFieldEditor.cs
- GlyphsSerializer.cs
- UserNameSecurityTokenProvider.cs
- IndexedWhereQueryOperator.cs
- RecognizeCompletedEventArgs.cs
- XmlAutoDetectWriter.cs
- QilFunction.cs