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
- DocumentViewerBase.cs
- RtfControlWordInfo.cs
- FileDetails.cs
- ServicePointManager.cs
- HashCryptoHandle.cs
- FastEncoder.cs
- SHA256Managed.cs
- ListViewContainer.cs
- ClientTarget.cs
- ZipPackage.cs
- SwitchElementsCollection.cs
- WindowsListViewScroll.cs
- CommandManager.cs
- NumericExpr.cs
- Brush.cs
- BinaryObjectReader.cs
- CodePropertyReferenceExpression.cs
- IntSecurity.cs
- XmlWriterSettings.cs
- Array.cs
- UserCancellationException.cs
- HighContrastHelper.cs
- CssTextWriter.cs
- CodeIdentifier.cs
- MultiTouchSystemGestureLogic.cs
- TreeView.cs
- CqlGenerator.cs
- ClientCultureInfo.cs
- CollectionChangedEventManager.cs
- MgmtConfigurationRecord.cs
- CodeSnippetTypeMember.cs
- RoutedEvent.cs
- AutoResizedEvent.cs
- PackWebRequest.cs
- BindingBase.cs
- XslAstAnalyzer.cs
- ModifyActivitiesPropertyDescriptor.cs
- XmlConvert.cs
- ConfigXmlReader.cs
- MD5.cs
- UnsafeNativeMethodsCLR.cs
- DeclarativeCatalogPart.cs
- WebPageTraceListener.cs
- ToolStripDesignerAvailabilityAttribute.cs
- ApplicationException.cs
- GenericPrincipal.cs
- SqlNotificationEventArgs.cs
- ImageSourceConverter.cs
- DataObjectSettingDataEventArgs.cs
- Exception.cs
- XmlnsCache.cs
- URLIdentityPermission.cs
- OleCmdHelper.cs
- Function.cs
- ListBindingConverter.cs
- IsolatedStorageFile.cs
- Margins.cs
- ProcessInfo.cs
- Variable.cs
- XsdSchemaFileEditor.cs
- TextElementAutomationPeer.cs
- OdbcConnectionPoolProviderInfo.cs
- QuadraticBezierSegment.cs
- RotateTransform.cs
- TextRange.cs
- CodeSubDirectory.cs
- VerticalConnector.xaml.cs
- DbProviderServices.cs
- ConnectionStringSettingsCollection.cs
- RuntimeResourceSet.cs
- GacUtil.cs
- ApplicationActivator.cs
- MimeFormImporter.cs
- IResourceProvider.cs
- SqlExpressionNullability.cs
- SynchronizationLockException.cs
- SecureEnvironment.cs
- LocalFileSettingsProvider.cs
- TriggerBase.cs
- PhonemeConverter.cs
- BitmapDecoder.cs
- ByteConverter.cs
- SystemWebSectionGroup.cs
- SqlUDTStorage.cs
- MultipleViewPattern.cs
- SchemaCollectionPreprocessor.cs
- ZoneLinkButton.cs
- SaveFileDialog.cs
- TypeUtils.cs
- SoapAttributes.cs
- WorkflowApplicationUnloadedException.cs
- CodeTypeMember.cs
- ObjectListSelectEventArgs.cs
- LineSegment.cs
- HttpApplicationStateWrapper.cs
- RuntimeHelpers.cs
- DecimalFormatter.cs
- StringWriter.cs
- FileNotFoundException.cs
- thaishape.cs