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
- GACIdentityPermission.cs
- ExpressionBuilderCollection.cs
- ComboBoxAutomationPeer.cs
- SocketManager.cs
- PageContent.cs
- LambdaCompiler.Generated.cs
- JournalNavigationScope.cs
- TextServicesManager.cs
- RepeatBehavior.cs
- HttpListener.cs
- AdornerDecorator.cs
- _LocalDataStore.cs
- SessionStateItemCollection.cs
- CheckBoxPopupAdapter.cs
- HotCommands.cs
- StylusPlugin.cs
- EntityDesignerBuildProvider.cs
- InstalledVoice.cs
- LayoutSettings.cs
- mediapermission.cs
- TimeZoneNotFoundException.cs
- ObjectDataSourceDisposingEventArgs.cs
- AuthenticationModeHelper.cs
- SchemaElementLookUpTable.cs
- SettingsSavedEventArgs.cs
- PixelFormat.cs
- HTTPNotFoundHandler.cs
- CapabilitiesSection.cs
- StackOverflowException.cs
- ComponentManagerBroker.cs
- AnnotationService.cs
- DbDeleteCommandTree.cs
- SqlGenerator.cs
- CalendarDay.cs
- SubMenuStyleCollection.cs
- StylusPlugInCollection.cs
- HandledEventArgs.cs
- TableLayoutColumnStyleCollection.cs
- TemplateColumn.cs
- CopyOfAction.cs
- XmlSchemas.cs
- KeyedHashAlgorithm.cs
- RectKeyFrameCollection.cs
- DateTimeOffset.cs
- MemberHolder.cs
- ToolStripItemDesigner.cs
- SafeEventLogReadHandle.cs
- FontWeights.cs
- ChangeTracker.cs
- _DomainName.cs
- EncodingStreamWrapper.cs
- _NtlmClient.cs
- DataGridColumn.cs
- EditorPart.cs
- StickyNoteAnnotations.cs
- Ref.cs
- ToolStripMenuItem.cs
- Win32.cs
- MailHeaderInfo.cs
- MsmqReceiveParameters.cs
- ProtocolsConfigurationEntry.cs
- XmlNodeChangedEventArgs.cs
- WmlLinkAdapter.cs
- lengthconverter.cs
- TransformedBitmap.cs
- InstanceKeyCompleteException.cs
- _RequestCacheProtocol.cs
- Unit.cs
- KeyEvent.cs
- PropertyChangingEventArgs.cs
- CompilerResults.cs
- NamespaceDisplayAutomationPeer.cs
- NumberSubstitution.cs
- AdornerHitTestResult.cs
- PointAnimation.cs
- SplineKeyFrames.cs
- Point.cs
- FunctionGenerator.cs
- StrokeFIndices.cs
- __Filters.cs
- HttpHandler.cs
- FrameworkObject.cs
- TextProperties.cs
- BulletedListEventArgs.cs
- ScriptRegistrationManager.cs
- Slider.cs
- Util.cs
- RIPEMD160.cs
- SynchronizedInputPattern.cs
- ScriptComponentDescriptor.cs
- WebCategoryAttribute.cs
- TraceProvider.cs
- CroppedBitmap.cs
- WebPartManagerInternals.cs
- MarkupCompilePass2.cs
- SQLGuid.cs
- OciHandle.cs
- MenuBase.cs
- StrongNameKeyPair.cs
- CompositeFontParser.cs