Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Data / System / Data / SqlClient / TdsRecordBufferSetter.cs / 1305376 / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- StubHelpers.cs
- LinqDataSourceStatusEventArgs.cs
- BulletChrome.cs
- DataTemplateKey.cs
- SessionConnectionReader.cs
- ToolBarButton.cs
- BorderSidesEditor.cs
- ZipIOExtraFieldZip64Element.cs
- DependentList.cs
- DataServiceQueryProvider.cs
- RSAPKCS1SignatureFormatter.cs
- DataGridViewTopLeftHeaderCell.cs
- PageContentCollection.cs
- TimeoutHelper.cs
- ConfigurationLocation.cs
- GridViewSelectEventArgs.cs
- ContentWrapperAttribute.cs
- ToolBarButton.cs
- SchemaEntity.cs
- XmlStreamStore.cs
- NullReferenceException.cs
- IpcManager.cs
- PageBuildProvider.cs
- Viewport3DAutomationPeer.cs
- VerificationAttribute.cs
- ValueTypeFixupInfo.cs
- TabControl.cs
- ReflectionUtil.cs
- ContractComponent.cs
- UnescapedXmlDiagnosticData.cs
- SqlXmlStorage.cs
- GridViewDeletedEventArgs.cs
- XmlSchemaAttributeGroupRef.cs
- DeclarationUpdate.cs
- IconConverter.cs
- Int64AnimationBase.cs
- ShapeTypeface.cs
- ApplicationServicesHostFactory.cs
- ThousandthOfEmRealPoints.cs
- EntityProxyTypeInfo.cs
- SystemTcpStatistics.cs
- HeaderUtility.cs
- errorpatternmatcher.cs
- ServiceHttpModule.cs
- XmlFormatReaderGenerator.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- TypeConverterHelper.cs
- DiscoveryOperationContext.cs
- _ListenerAsyncResult.cs
- ListViewDeletedEventArgs.cs
- DataGridRowHeader.cs
- CodeEntryPointMethod.cs
- tibetanshape.cs
- XmlElementAttribute.cs
- BuildTopDownAttribute.cs
- ThreadSafeList.cs
- AsynchronousChannelMergeEnumerator.cs
- KnownTypesHelper.cs
- SchemaType.cs
- AdapterUtil.cs
- GenericIdentity.cs
- BitmapEffectGeneralTransform.cs
- Helpers.cs
- TextCompositionEventArgs.cs
- ValidationError.cs
- MultiSelectRootGridEntry.cs
- HTMLTagNameToTypeMapper.cs
- WindowsGraphicsWrapper.cs
- WindowsGraphics2.cs
- PointAnimationUsingKeyFrames.cs
- AstNode.cs
- CodeTypeOfExpression.cs
- CodeVariableDeclarationStatement.cs
- RelationshipManager.cs
- Wildcard.cs
- PagerSettings.cs
- WindowsFormsHostAutomationPeer.cs
- sqlnorm.cs
- ThemeDirectoryCompiler.cs
- SessionStateUtil.cs
- DateTimeFormatInfo.cs
- XmlWhitespace.cs
- DispatcherHooks.cs
- XmlNodeChangedEventArgs.cs
- TempFiles.cs
- MessageSmuggler.cs
- Root.cs
- AdRotatorDesigner.cs
- ContainerControl.cs
- PageContentCollection.cs
- TreeNodeEventArgs.cs
- PerfCounters.cs
- SelectingProviderEventArgs.cs
- ColorConverter.cs
- StackOverflowException.cs
- UIHelper.cs
- BinaryFormatterSinks.cs
- SerializationSectionGroup.cs
- XmlEntity.cs
- SubstitutionList.cs