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
- TraceSource.cs
- QueryStringHandler.cs
- CreationContext.cs
- hebrewshape.cs
- CodeDesigner.cs
- ObjectAnimationBase.cs
- SplashScreen.cs
- MemberBinding.cs
- TextRunProperties.cs
- TabControlToolboxItem.cs
- PackagingUtilities.cs
- EdmScalarPropertyAttribute.cs
- followingsibling.cs
- BoolLiteral.cs
- XappLauncher.cs
- IItemContainerGenerator.cs
- QilGeneratorEnv.cs
- ResolveRequestResponseAsyncResult.cs
- MemberDescriptor.cs
- ValidationContext.cs
- WebServiceTypeData.cs
- DictionarySectionHandler.cs
- DrawTreeNodeEventArgs.cs
- DataControlLinkButton.cs
- DataGridViewRowPostPaintEventArgs.cs
- ArrangedElement.cs
- IfAction.cs
- Error.cs
- ApplicationGesture.cs
- FontCollection.cs
- SqlUDTStorage.cs
- DocumentGridPage.cs
- MouseWheelEventArgs.cs
- DriveNotFoundException.cs
- FormsAuthenticationUser.cs
- DocumentProperties.cs
- TransactionsSectionGroup.cs
- DetailsViewRow.cs
- PtsCache.cs
- KerberosRequestorSecurityToken.cs
- FixedDocumentPaginator.cs
- DataControlFieldHeaderCell.cs
- HttpProcessUtility.cs
- QilLiteral.cs
- UpdateDelegates.Generated.cs
- DoubleLink.cs
- BitConverter.cs
- DBBindings.cs
- GetRecipientListRequest.cs
- ApplicationHost.cs
- IndexedWhereQueryOperator.cs
- DataControlFieldsEditor.cs
- HtmlGenericControl.cs
- HostAdapter.cs
- XmlNamespaceDeclarationsAttribute.cs
- ChildChangedEventArgs.cs
- HtmlDocument.cs
- PropertyToken.cs
- Crc32.cs
- DataGridViewColumnStateChangedEventArgs.cs
- DataGridItemAttachedStorage.cs
- XmlAnyElementAttributes.cs
- SoapSchemaExporter.cs
- BasicBrowserDialog.cs
- NonClientArea.cs
- WebConfigurationHostFileChange.cs
- ThicknessKeyFrameCollection.cs
- SafeNativeMethods.cs
- ApplicationManager.cs
- SiteOfOriginContainer.cs
- OrderByBuilder.cs
- ImageAnimator.cs
- XmlValidatingReader.cs
- XmlTextReader.cs
- _NestedSingleAsyncResult.cs
- ClassicBorderDecorator.cs
- HtmlTableRowCollection.cs
- DbParameterCollection.cs
- FloaterParagraph.cs
- TokenizerHelper.cs
- TemplateBindingExtensionConverter.cs
- LocationReferenceEnvironment.cs
- FieldDescriptor.cs
- SpecularMaterial.cs
- FreezableCollection.cs
- CssStyleCollection.cs
- DataBoundLiteralControl.cs
- HttpProcessUtility.cs
- NodeLabelEditEvent.cs
- ListViewItemEventArgs.cs
- HandoffBehavior.cs
- _ListenerAsyncResult.cs
- RelationshipManager.cs
- AppDomainManager.cs
- Context.cs
- DataComponentNameHandler.cs
- MappingSource.cs
- WebPartMovingEventArgs.cs
- Guid.cs
- Simplifier.cs