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
- AddInDeploymentState.cs
- WebPartExportVerb.cs
- StructuralObject.cs
- BindingCollection.cs
- ResourcePermissionBaseEntry.cs
- DataIdProcessor.cs
- ADMembershipProvider.cs
- ContentFileHelper.cs
- CodeMemberEvent.cs
- ExternalException.cs
- RawUIStateInputReport.cs
- DependencyPropertyConverter.cs
- SoapAttributeAttribute.cs
- ParseElementCollection.cs
- CroppedBitmap.cs
- PersistenceParticipant.cs
- TypeLoadException.cs
- DoubleLinkList.cs
- NetworkCredential.cs
- ArgumentValidation.cs
- ColumnPropertiesGroup.cs
- LinqDataSourceSelectEventArgs.cs
- DisplayMemberTemplateSelector.cs
- DelegateHelpers.cs
- LogSwitch.cs
- DetailsViewPagerRow.cs
- RangeValuePatternIdentifiers.cs
- DiagnosticTrace.cs
- WebPart.cs
- SmiEventSink.cs
- ToolStripItemEventArgs.cs
- EnumMemberAttribute.cs
- DataViewSettingCollection.cs
- ListViewSortEventArgs.cs
- TimeoutHelper.cs
- InkCanvasSelectionAdorner.cs
- MarshalByRefObject.cs
- ConstraintConverter.cs
- ToolStripPanelRenderEventArgs.cs
- WSSecureConversationFeb2005.cs
- ResXResourceWriter.cs
- ReadOnlyHierarchicalDataSourceView.cs
- SingleAnimation.cs
- TransformedBitmap.cs
- XmlNamespaceDeclarationsAttribute.cs
- WorkflowApplicationUnhandledExceptionEventArgs.cs
- PerformanceCounterManager.cs
- ElementsClipboardData.cs
- Int32Rect.cs
- TextEditorCharacters.cs
- LabelLiteral.cs
- RegisteredExpandoAttribute.cs
- TemplatePropertyEntry.cs
- CodeChecksumPragma.cs
- ZipIOModeEnforcingStream.cs
- TextEffectCollection.cs
- XPathSelfQuery.cs
- TypeConverterHelper.cs
- XmlILConstructAnalyzer.cs
- SpellCheck.cs
- ObjectDataSourceMethodEventArgs.cs
- ReadingWritingEntityEventArgs.cs
- HierarchicalDataSourceIDConverter.cs
- BevelBitmapEffect.cs
- View.cs
- Icon.cs
- OleDbRowUpdatedEvent.cs
- DetailsViewCommandEventArgs.cs
- TrackingMemoryStream.cs
- EditCommandColumn.cs
- PipelineModuleStepContainer.cs
- BitmapEffectGroup.cs
- XpsColorContext.cs
- SHA256Managed.cs
- HybridWebProxyFinder.cs
- ActivityInstance.cs
- Visual.cs
- WebPartCloseVerb.cs
- X509Certificate.cs
- Expander.cs
- ResourceContainer.cs
- StorageMappingItemLoader.cs
- ListChangedEventArgs.cs
- ExpandoClass.cs
- OperationBehaviorAttribute.cs
- UIPropertyMetadata.cs
- CodeStatement.cs
- WindowsSlider.cs
- DrawTreeNodeEventArgs.cs
- securitycriticaldataformultiplegetandset.cs
- TypeInformation.cs
- SrgsElementFactoryCompiler.cs
- DataGridViewLayoutData.cs
- BookmarkTable.cs
- AsyncOperation.cs
- TitleStyle.cs
- BlockCollection.cs
- GlyphRunDrawing.cs
- XPathCompileException.cs
- DatePicker.cs