Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------------------------ // // 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
- ConditionalDesigner.cs
- PackUriHelper.cs
- LocatorManager.cs
- Container.cs
- SwitchAttribute.cs
- DefaultPropertyAttribute.cs
- XmlParserContext.cs
- VirtualPath.cs
- ProtocolsSection.cs
- DesignerAttribute.cs
- NavigationPropertyEmitter.cs
- Stackframe.cs
- OperationResponse.cs
- GradientBrush.cs
- DefaultPropertiesToSend.cs
- GeneralTransform3D.cs
- _Events.cs
- KeyPressEvent.cs
- TextParagraphCache.cs
- StylusPoint.cs
- AuthenticationModulesSection.cs
- GPPOINTF.cs
- BStrWrapper.cs
- altserialization.cs
- ComponentEditorPage.cs
- ProcessModelInfo.cs
- autovalidator.cs
- UIInitializationException.cs
- RequestCachingSection.cs
- PriorityQueue.cs
- Pair.cs
- ModelItemDictionary.cs
- ConfigXmlWhitespace.cs
- DataGridViewCellParsingEventArgs.cs
- XmlSerializationReader.cs
- DragEvent.cs
- PackageStore.cs
- Accessible.cs
- WorkflowInspectionServices.cs
- StrongNameUtility.cs
- BrowserCapabilitiesFactory.cs
- AddInServer.cs
- GeneratedContractType.cs
- SoapCodeExporter.cs
- BindableTemplateBuilder.cs
- RelationshipNavigation.cs
- EntityDataSourceEntitySetNameItem.cs
- ProxyWebPartManager.cs
- MultiPropertyDescriptorGridEntry.cs
- IconBitmapDecoder.cs
- ManipulationLogic.cs
- UrlAuthFailedErrorFormatter.cs
- ContextProperty.cs
- WindowsToolbarAsMenu.cs
- Hashtable.cs
- GeneralTransform.cs
- Calendar.cs
- EnvelopedSignatureTransform.cs
- SvcMapFileSerializer.cs
- mediaeventargs.cs
- ProfileManager.cs
- MDIControlStrip.cs
- ErrorActivity.cs
- TokenBasedSet.cs
- handlecollector.cs
- Columns.cs
- FilteredSchemaElementLookUpTable.cs
- PageHandlerFactory.cs
- VirtualPath.cs
- Control.cs
- SqlErrorCollection.cs
- PrintPageEvent.cs
- RuntimeHandles.cs
- ListenerConnectionModeReader.cs
- PageVisual.cs
- TypeElement.cs
- DateBoldEvent.cs
- BulletedList.cs
- _Connection.cs
- InvalidDataException.cs
- MarshalDirectiveException.cs
- InsufficientMemoryException.cs
- SocketSettings.cs
- XmlSchemaInfo.cs
- StringPropertyBuilder.cs
- QueueProcessor.cs
- IListConverters.cs
- PropertyFilter.cs
- ImageInfo.cs
- CodePageUtils.cs
- Win32KeyboardDevice.cs
- SemaphoreSecurity.cs
- X509AsymmetricSecurityKey.cs
- Inflater.cs
- UniqueIdentifierService.cs
- BrowserInteropHelper.cs
- ConfigurationHandlersInstallComponent.cs
- HtmlTextArea.cs
- SHA512Managed.cs
- HtmlInputControl.cs