Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / Data / System / Data / SqlClient / TdsRecordBufferSetter.cs / 1 / 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
- DateTimeOffsetConverter.cs
- DocobjHost.cs
- XPathQilFactory.cs
- RTTypeWrapper.cs
- DataTrigger.cs
- KeyConstraint.cs
- TerminatorSinks.cs
- UnauthorizedWebPart.cs
- ToolStripGripRenderEventArgs.cs
- SchemaSetCompiler.cs
- NotifyParentPropertyAttribute.cs
- SqlCacheDependencySection.cs
- XslTransform.cs
- Axis.cs
- CompoundFileStreamReference.cs
- AQNBuilder.cs
- graph.cs
- BinaryUtilClasses.cs
- SqlDataSourceSelectingEventArgs.cs
- DataColumnChangeEvent.cs
- WindowsGraphics.cs
- Constraint.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- Pkcs7Signer.cs
- SemaphoreSecurity.cs
- LinearKeyFrames.cs
- CustomErrorsSectionWrapper.cs
- NameValuePermission.cs
- TreeNodeConverter.cs
- BamlResourceContent.cs
- CompositionTarget.cs
- ListenerHandler.cs
- ConsoleTraceListener.cs
- TextLineResult.cs
- CacheVirtualItemsEvent.cs
- MobileControlPersister.cs
- Int16KeyFrameCollection.cs
- RoleServiceManager.cs
- CompensatableTransactionScopeActivityDesigner.cs
- ConstructorBuilder.cs
- JsonClassDataContract.cs
- MethodToken.cs
- CngProperty.cs
- ReflectEventDescriptor.cs
- TypedDataSetSchemaImporterExtensionFx35.cs
- FixedSOMPage.cs
- RightsManagementEncryptedStream.cs
- CodeTypeDeclarationCollection.cs
- CapabilitiesAssignment.cs
- StringStorage.cs
- ControlBindingsCollection.cs
- DbConnectionPool.cs
- TextMetrics.cs
- GridViewHeaderRowPresenter.cs
- ExecutedRoutedEventArgs.cs
- Table.cs
- DirectoryObjectSecurity.cs
- CallbackException.cs
- PerfService.cs
- MD5.cs
- SchemaManager.cs
- SqlColumnizer.cs
- WSUtilitySpecificationVersion.cs
- ZipIOExtraFieldZip64Element.cs
- DbConnectionClosed.cs
- XamlPointCollectionSerializer.cs
- HitTestParameters.cs
- OleDbDataReader.cs
- TextServicesPropertyRanges.cs
- XmlSignificantWhitespace.cs
- DbConnectionOptions.cs
- ListControlBuilder.cs
- CompositeDuplexBindingElement.cs
- Context.cs
- CroppedBitmap.cs
- wmiprovider.cs
- UriTemplateTrieNode.cs
- GlyphRun.cs
- ToolStripCodeDomSerializer.cs
- TimeSpan.cs
- MenuItemBindingCollection.cs
- NativeMethods.cs
- AlternationConverter.cs
- DataGridViewLinkColumn.cs
- LOSFormatter.cs
- ParseChildrenAsPropertiesAttribute.cs
- CodeExporter.cs
- CodeCatchClause.cs
- WindowsStreamSecurityUpgradeProvider.cs
- BooleanFacetDescriptionElement.cs
- GetPageNumberCompletedEventArgs.cs
- XmlAttributeAttribute.cs
- MailAddressCollection.cs
- PolyBezierSegment.cs
- X509Utils.cs
- ContextProperty.cs
- StaticSiteMapProvider.cs
- ListViewItem.cs
- FixedBufferAttribute.cs
- QueryInterceptorAttribute.cs