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
- DoubleAnimationClockResource.cs
- Int32EqualityComparer.cs
- HashCodeCombiner.cs
- DefaultObjectMappingItemCollection.cs
- FontInfo.cs
- MethodToken.cs
- PagedDataSource.cs
- IgnoreSection.cs
- DynamicUpdateCommand.cs
- AttachmentService.cs
- ConsumerConnectionPointCollection.cs
- Rijndael.cs
- ProjectionCamera.cs
- RawStylusInputCustomData.cs
- CLSCompliantAttribute.cs
- SafeSerializationManager.cs
- CubicEase.cs
- HandleCollector.cs
- ServicesSection.cs
- HttpHandlerActionCollection.cs
- GPRECT.cs
- ReflectionUtil.cs
- FigureParaClient.cs
- StructuredTypeEmitter.cs
- ListBoxItemAutomationPeer.cs
- PackagePart.cs
- UpdateEventArgs.cs
- ObjectDataSource.cs
- StylusButtonEventArgs.cs
- CacheSection.cs
- ZipIOLocalFileBlock.cs
- X509CertificateValidator.cs
- OuterGlowBitmapEffect.cs
- MessageQueueException.cs
- EncoderBestFitFallback.cs
- ItemCheckedEvent.cs
- SchemaImporterExtensionElement.cs
- DataServiceRequestOfT.cs
- SamlAuthenticationClaimResource.cs
- TimeoutValidationAttribute.cs
- BindingContext.cs
- FocusWithinProperty.cs
- OuterGlowBitmapEffect.cs
- WebHeaderCollection.cs
- XmlToDatasetMap.cs
- XmlSchemaSimpleContentExtension.cs
- safelinkcollection.cs
- CancellationState.cs
- PerformanceCounterCategory.cs
- UrlAuthorizationModule.cs
- ConnectionsZone.cs
- WrapperEqualityComparer.cs
- PlainXmlWriter.cs
- StatusBarItem.cs
- SamlDelegatingWriter.cs
- ReadOnlyObservableCollection.cs
- FormViewPageEventArgs.cs
- AssociationSetMetadata.cs
- SerializationInfo.cs
- XsdDuration.cs
- SafeSystemMetrics.cs
- TableCellAutomationPeer.cs
- ToolStripDropDownDesigner.cs
- CodeAssignStatement.cs
- SectionVisual.cs
- DummyDataSource.cs
- HttpRuntimeSection.cs
- HttpListenerContext.cs
- TextTreeTextElementNode.cs
- CoTaskMemHandle.cs
- ProjectionPruner.cs
- CodeLabeledStatement.cs
- EventMetadata.cs
- DataGridViewLinkCell.cs
- CompiledIdentityConstraint.cs
- ObjectStateFormatter.cs
- ReadOnlyDataSource.cs
- PriorityChain.cs
- HostExecutionContextManager.cs
- SqlPersonalizationProvider.cs
- CodePageEncoding.cs
- ObjectDisposedException.cs
- MultiView.cs
- Unit.cs
- ProgressChangedEventArgs.cs
- DecoderFallbackWithFailureFlag.cs
- SimpleType.cs
- SafeRightsManagementEnvironmentHandle.cs
- ErrorInfoXmlDocument.cs
- TransformValueSerializer.cs
- CompoundFileReference.cs
- XmlWrappingReader.cs
- MimeBasePart.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- PersonalizationEntry.cs
- UnaryNode.cs
- GeneralTransform3D.cs
- XMLSchema.cs
- DBDataPermissionAttribute.cs
- storepermission.cs