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
- DataGridViewCheckBoxColumn.cs
- WindowsListViewItemCheckBox.cs
- WebSysDefaultValueAttribute.cs
- PeerObject.cs
- WindowsImpersonationContext.cs
- DetailsViewDeletedEventArgs.cs
- DataServiceException.cs
- RowSpanVector.cs
- CopyCodeAction.cs
- WebPartZoneBase.cs
- XmlNodeWriter.cs
- ApplicationCommands.cs
- DefaultObjectMappingItemCollection.cs
- StreamAsIStream.cs
- ProjectionPath.cs
- FrameworkElementAutomationPeer.cs
- ComboBoxItem.cs
- CommunicationException.cs
- LongPath.cs
- CloudCollection.cs
- RootBuilder.cs
- AssemblyName.cs
- ZoneButton.cs
- PathSegmentCollection.cs
- TargetControlTypeCache.cs
- ThicknessAnimationBase.cs
- PointLight.cs
- BooleanConverter.cs
- WsatExtendedInformation.cs
- ContractMapping.cs
- FlowDocumentFormatter.cs
- SqlDataRecord.cs
- HttpStreamFormatter.cs
- CellParaClient.cs
- TableRow.cs
- TypedTableBaseExtensions.cs
- LookupBindingPropertiesAttribute.cs
- RenderDataDrawingContext.cs
- SimpleMailWebEventProvider.cs
- IISMapPath.cs
- OdbcTransaction.cs
- ParseElement.cs
- HMACSHA256.cs
- DataControlCommands.cs
- CommandExpr.cs
- PreProcessor.cs
- OpacityConverter.cs
- ProtocolProfile.cs
- TypeConverter.cs
- WebPartManagerInternals.cs
- NCryptNative.cs
- PtsCache.cs
- ExplicitDiscriminatorMap.cs
- BasicHttpSecurityMode.cs
- KeyTime.cs
- HttpStreams.cs
- SequenceNumber.cs
- RelativeSource.cs
- SingleAnimation.cs
- ReferencedAssembly.cs
- DefaultValueTypeConverter.cs
- URL.cs
- MetadataSerializer.cs
- TargetParameterCountException.cs
- SecurityPermission.cs
- DetailsViewInsertEventArgs.cs
- ColorTranslator.cs
- SystemIcmpV4Statistics.cs
- RenderingBiasValidation.cs
- ScriptControlDescriptor.cs
- XomlCompilerParameters.cs
- TableCell.cs
- ItemsChangedEventArgs.cs
- QilInvoke.cs
- RetrieveVirtualItemEventArgs.cs
- HtmlInputText.cs
- Int32.cs
- PersonalizationStateInfo.cs
- DbDataSourceEnumerator.cs
- SoapSchemaMember.cs
- StyleBamlRecordReader.cs
- SplineQuaternionKeyFrame.cs
- TableLayoutStyle.cs
- SafeFileMapViewHandle.cs
- ResourcePool.cs
- OdbcCommandBuilder.cs
- DataPagerField.cs
- AdornerDecorator.cs
- HijriCalendar.cs
- Set.cs
- DesignerDataSourceView.cs
- ValidatorUtils.cs
- ScriptComponentDescriptor.cs
- TemplateBamlTreeBuilder.cs
- WsatTransactionHeader.cs
- ActionMessageFilter.cs
- PagesSection.cs
- SpellCheck.cs
- CodeChecksumPragma.cs
- WorkflowMarkupSerializationProvider.cs