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
- Pts.cs
- ReadOnlyHierarchicalDataSource.cs
- DecoderFallback.cs
- UIHelper.cs
- SapiGrammar.cs
- NotifyCollectionChangedEventArgs.cs
- OleDbSchemaGuid.cs
- ResourceAssociationType.cs
- ListItem.cs
- ResXResourceSet.cs
- ExceptionUtil.cs
- SmiEventStream.cs
- MachineKeySection.cs
- Triangle.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- ApplicationInfo.cs
- IisTraceWebEventProvider.cs
- DbCommandDefinition.cs
- SQLCharsStorage.cs
- DataPagerFieldItem.cs
- Facet.cs
- FileIOPermission.cs
- NotifyIcon.cs
- SecurityAlgorithmSuite.cs
- ImageDrawing.cs
- ReflectTypeDescriptionProvider.cs
- TransportBindingElementImporter.cs
- AsymmetricKeyExchangeDeformatter.cs
- CodeConstructor.cs
- AppSettingsExpressionEditor.cs
- ButtonBaseAutomationPeer.cs
- CfgParser.cs
- LogPolicy.cs
- DrawingContextDrawingContextWalker.cs
- InstanceDataCollection.cs
- MenuItemBinding.cs
- WindowsEditBox.cs
- SpecularMaterial.cs
- KeyInstance.cs
- cookiecollection.cs
- Vector3DCollectionConverter.cs
- ResourceSet.cs
- jithelpers.cs
- AuthenticationModuleElement.cs
- Literal.cs
- precedingquery.cs
- DetailsViewUpdateEventArgs.cs
- EncoderParameters.cs
- ToolStripItem.cs
- DateTimeOffsetAdapter.cs
- AssertUtility.cs
- TaskFormBase.cs
- IsolatedStorageException.cs
- ErrorStyle.cs
- PrincipalPermission.cs
- DataBoundControlAdapter.cs
- X509DefaultServiceCertificateElement.cs
- InheritedPropertyChangedEventArgs.cs
- DataServiceProcessingPipeline.cs
- EvidenceTypeDescriptor.cs
- Int16.cs
- FontWeights.cs
- Attributes.cs
- SessionSwitchEventArgs.cs
- SpecialFolderEnumConverter.cs
- BufferModesCollection.cs
- XmlSchemaElement.cs
- MasterPageParser.cs
- Events.cs
- TypeConstant.cs
- ProcessInfo.cs
- DialogDivider.cs
- WorkflowServiceBehavior.cs
- DetailsViewUpdatedEventArgs.cs
- ChtmlCommandAdapter.cs
- WebColorConverter.cs
- cache.cs
- ConfigXmlDocument.cs
- DataGridToolTip.cs
- WebPartDescriptionCollection.cs
- LinqMaximalSubtreeNominator.cs
- CodeTypeMember.cs
- EndpointDiscoveryElement.cs
- QueryContinueDragEvent.cs
- ResXBuildProvider.cs
- HelpKeywordAttribute.cs
- PersonalizableAttribute.cs
- ResolvedKeyFrameEntry.cs
- BmpBitmapDecoder.cs
- IPGlobalProperties.cs
- ControlValuePropertyAttribute.cs
- cookiecollection.cs
- SymbolDocumentInfo.cs
- SqlColumnizer.cs
- LayoutEvent.cs
- CodeChecksumPragma.cs
- AuthenticationModulesSection.cs
- Point3DAnimationBase.cs
- Model3DGroup.cs
- DbParameterCollection.cs