Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / Data / System / Data / SqlClient / TdsRecordBufferSetter.cs / 4 / 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
- SizeConverter.cs
- ValidatorCollection.cs
- Journal.cs
- FillErrorEventArgs.cs
- BindingContext.cs
- InputProcessorProfiles.cs
- GenericPrincipal.cs
- MaskedTextBoxDesignerActionList.cs
- ToolStripStatusLabel.cs
- SkewTransform.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- arabicshape.cs
- QueryTaskGroupState.cs
- TableChangeProcessor.cs
- ColorAnimationUsingKeyFrames.cs
- Comparer.cs
- SessionStateModule.cs
- MessageEncoderFactory.cs
- CaseInsensitiveHashCodeProvider.cs
- KeyGesture.cs
- ListMarkerSourceInfo.cs
- UIElementIsland.cs
- StringPropertyBuilder.cs
- DomainUpDown.cs
- MasterPageCodeDomTreeGenerator.cs
- UnsettableComboBox.cs
- EntitySet.cs
- ObjectItemCollectionAssemblyCacheEntry.cs
- ProjectionCamera.cs
- basevalidator.cs
- FileSystemEventArgs.cs
- RightsManagementPermission.cs
- EntityKey.cs
- Triangle.cs
- SqlConnectionStringBuilder.cs
- SQLInt16.cs
- FrameworkObject.cs
- EntityDesignerBuildProvider.cs
- TraceInternal.cs
- DependencyPropertyDescriptor.cs
- TrustManagerMoreInformation.cs
- HtmlImage.cs
- SubclassTypeValidatorAttribute.cs
- CombinedGeometry.cs
- Cell.cs
- BridgeDataRecord.cs
- DummyDataSource.cs
- TreeNode.cs
- GridViewDeletedEventArgs.cs
- HitTestResult.cs
- WebPartManagerInternals.cs
- UpdateProgress.cs
- RolePrincipal.cs
- StateChangeEvent.cs
- QilChoice.cs
- Ref.cs
- DrawingAttributesDefaultValueFactory.cs
- PrintPreviewDialog.cs
- AutoFocusStyle.xaml.cs
- PropertyPushdownHelper.cs
- SessionEndingCancelEventArgs.cs
- ObjectRef.cs
- METAHEADER.cs
- ParenthesizePropertyNameAttribute.cs
- BindingListCollectionView.cs
- BitStream.cs
- EmbeddedMailObjectsCollection.cs
- IImplicitResourceProvider.cs
- ValidationHelpers.cs
- EventTask.cs
- DependencyPropertyAttribute.cs
- OleDbMetaDataFactory.cs
- KeyedHashAlgorithm.cs
- GenericUriParser.cs
- RadioButton.cs
- TableColumn.cs
- SmtpSection.cs
- SeparatorAutomationPeer.cs
- SmiXetterAccessMap.cs
- SendingRequestEventArgs.cs
- smtpconnection.cs
- DoubleKeyFrameCollection.cs
- ChannelServices.cs
- updatecommandorderer.cs
- EntityDataSourceMemberPath.cs
- AuthorizationRule.cs
- ControlBuilderAttribute.cs
- TokenBasedSetEnumerator.cs
- DesigntimeLicenseContextSerializer.cs
- XmlSchemaDatatype.cs
- ToolStripItemCollection.cs
- ValidationRuleCollection.cs
- QuaternionRotation3D.cs
- XPathDocumentBuilder.cs
- SqlCommandBuilder.cs
- BufferedStream.cs
- SimpleMailWebEventProvider.cs
- CardSpaceException.cs
- _CacheStreams.cs
- StreamInfo.cs