Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / Data / System / Data / SqlClient / SqlClientWrapperSmiStreamChars.cs / 1 / SqlClientWrapperSmiStreamChars.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- namespace Microsoft.SqlServer.Server { using System; using System.Data.Common; using System.Data.SqlClient; using System.Data.SqlTypes; using System.Diagnostics; using System.IO; // Simple SqlStreamChars wrapper over SmiStream that handles server events on the // SqlClient side of Smi internal class SqlClientWrapperSmiStreamChars : SqlStreamChars { private SmiEventSink_Default _sink; private SmiStream _stream; internal SqlClientWrapperSmiStreamChars( SmiEventSink_Default sink, SmiStream stream ) { Debug.Assert( null != sink ); Debug.Assert( null != stream ); _sink = sink; _stream = stream; } public override bool IsNull { get { return null == _stream; } } public override bool CanRead { get { return _stream.CanRead; } } // If CanSeek is false, Position, Seek, Length, and SetLength should throw. public override bool CanSeek { get { return _stream.CanSeek; } } public override bool CanWrite { get { return _stream.CanWrite; } } public override long Length { get { long length = _stream.GetLength( _sink ); _sink.ProcessMessagesAndThrow(); if ( length > 0 ) return length / sizeof( char ); else return length; } } public override long Position { get { long position = _stream.GetPosition( _sink ) / sizeof( char ); _sink.ProcessMessagesAndThrow(); return position; } set { if ( value < 0 ) { throw ADP.ArgumentOutOfRange("Position"); } _stream.SetPosition( _sink, value * sizeof( char ) ); _sink.ProcessMessagesAndThrow(); } } public override void Flush() { _stream.Flush( _sink ); _sink.ProcessMessagesAndThrow(); } public override long Seek(long offset, SeekOrigin origin) { long result = _stream.Seek( _sink, offset * sizeof( char ), origin ); _sink.ProcessMessagesAndThrow(); return result; } public override void SetLength(long value) { if ( value < 0 ) { throw ADP.ArgumentOutOfRange("value"); } _stream.SetLength( _sink, value * sizeof( char ) ); _sink.ProcessMessagesAndThrow(); } public override int Read(char[] buffer, int offset, int count) { int bytesRead = _stream.Read( _sink, buffer, offset * sizeof( char ), count ); _sink.ProcessMessagesAndThrow(); return bytesRead; } public override void Write(char[] buffer, int offset, int count) { _stream.Write( _sink, buffer, offset, count ); _sink.ProcessMessagesAndThrow(); } // Convenience methods to allow simple pulling/pushing of raw bytes internal int Read(byte[] buffer, int offset, int count) { int bytesRead = _stream.Read( _sink, buffer, offset, count ); _sink.ProcessMessagesAndThrow(); return bytesRead; } internal void Write(byte[] buffer, int offset, int count) { _stream.Write( _sink, buffer, offset, count ); _sink.ProcessMessagesAndThrow(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- namespace Microsoft.SqlServer.Server { using System; using System.Data.Common; using System.Data.SqlClient; using System.Data.SqlTypes; using System.Diagnostics; using System.IO; // Simple SqlStreamChars wrapper over SmiStream that handles server events on the // SqlClient side of Smi internal class SqlClientWrapperSmiStreamChars : SqlStreamChars { private SmiEventSink_Default _sink; private SmiStream _stream; internal SqlClientWrapperSmiStreamChars( SmiEventSink_Default sink, SmiStream stream ) { Debug.Assert( null != sink ); Debug.Assert( null != stream ); _sink = sink; _stream = stream; } public override bool IsNull { get { return null == _stream; } } public override bool CanRead { get { return _stream.CanRead; } } // If CanSeek is false, Position, Seek, Length, and SetLength should throw. public override bool CanSeek { get { return _stream.CanSeek; } } public override bool CanWrite { get { return _stream.CanWrite; } } public override long Length { get { long length = _stream.GetLength( _sink ); _sink.ProcessMessagesAndThrow(); if ( length > 0 ) return length / sizeof( char ); else return length; } } public override long Position { get { long position = _stream.GetPosition( _sink ) / sizeof( char ); _sink.ProcessMessagesAndThrow(); return position; } set { if ( value < 0 ) { throw ADP.ArgumentOutOfRange("Position"); } _stream.SetPosition( _sink, value * sizeof( char ) ); _sink.ProcessMessagesAndThrow(); } } public override void Flush() { _stream.Flush( _sink ); _sink.ProcessMessagesAndThrow(); } public override long Seek(long offset, SeekOrigin origin) { long result = _stream.Seek( _sink, offset * sizeof( char ), origin ); _sink.ProcessMessagesAndThrow(); return result; } public override void SetLength(long value) { if ( value < 0 ) { throw ADP.ArgumentOutOfRange("value"); } _stream.SetLength( _sink, value * sizeof( char ) ); _sink.ProcessMessagesAndThrow(); } public override int Read(char[] buffer, int offset, int count) { int bytesRead = _stream.Read( _sink, buffer, offset * sizeof( char ), count ); _sink.ProcessMessagesAndThrow(); return bytesRead; } public override void Write(char[] buffer, int offset, int count) { _stream.Write( _sink, buffer, offset, count ); _sink.ProcessMessagesAndThrow(); } // Convenience methods to allow simple pulling/pushing of raw bytes internal int Read(byte[] buffer, int offset, int count) { int bytesRead = _stream.Read( _sink, buffer, offset, count ); _sink.ProcessMessagesAndThrow(); return bytesRead; } internal void Write(byte[] buffer, int offset, int count) { _stream.Write( _sink, buffer, offset, count ); _sink.ProcessMessagesAndThrow(); } } } // 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
- VBIdentifierDesigner.xaml.cs
- ColumnResult.cs
- TypeBuilder.cs
- PlatformNotSupportedException.cs
- StringExpressionSet.cs
- VectorAnimationBase.cs
- ByteStream.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- OperationCanceledException.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- StringSorter.cs
- WebPartsSection.cs
- TableLayoutSettingsTypeConverter.cs
- Span.cs
- PerspectiveCamera.cs
- CheckBox.cs
- ObjectQueryProvider.cs
- Scene3D.cs
- CharacterMetrics.cs
- SqlResolver.cs
- EnterpriseServicesHelper.cs
- FixedDocumentSequencePaginator.cs
- SqlLiftWhereClauses.cs
- ElementHostPropertyMap.cs
- PrimitiveType.cs
- SymLanguageVendor.cs
- HtmlDocument.cs
- DesignerActionItemCollection.cs
- RSAPKCS1SignatureDeformatter.cs
- GestureRecognitionResult.cs
- Soap.cs
- _LoggingObject.cs
- FieldMetadata.cs
- xmlsaver.cs
- ListChangedEventArgs.cs
- DoubleAnimation.cs
- BitmapEffectInputData.cs
- SectionXmlInfo.cs
- MenuItemStyleCollectionEditor.cs
- Exceptions.cs
- LowerCaseStringConverter.cs
- EventTrigger.cs
- InvalidWMPVersionException.cs
- SQLByteStorage.cs
- HostedTransportConfigurationBase.cs
- SerializationFieldInfo.cs
- GiveFeedbackEvent.cs
- RowToFieldTransformer.cs
- ChangeNode.cs
- FixedHyperLink.cs
- AutoResizedEvent.cs
- BaseCodePageEncoding.cs
- DesigntimeLicenseContext.cs
- TimeManager.cs
- EpmTargetTree.cs
- COM2ExtendedTypeConverter.cs
- CompositeCollectionView.cs
- Invariant.cs
- Visual.cs
- EdmValidator.cs
- IndexedString.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- WebServicesDescriptionAttribute.cs
- BamlBinaryWriter.cs
- SerialPinChanges.cs
- Utils.cs
- KeyGestureValueSerializer.cs
- SolidColorBrush.cs
- Win32SafeHandles.cs
- RestClientProxyHandler.cs
- Encoder.cs
- Maps.cs
- Padding.cs
- BasicHttpBindingElement.cs
- TCEAdapterGenerator.cs
- DetailsViewUpdateEventArgs.cs
- CodeDOMProvider.cs
- Console.cs
- DescendentsWalker.cs
- BooleanConverter.cs
- SqlDataSourceConfigureSelectPanel.cs
- PermissionSet.cs
- AsyncDataRequest.cs
- ResolveCompletedEventArgs.cs
- GAC.cs
- StateItem.cs
- InputScopeConverter.cs
- CalculatedColumn.cs
- EmptyQuery.cs
- SmiSettersStream.cs
- TrackBar.cs
- FixedSOMTextRun.cs
- ExtensionDataReader.cs
- Label.cs
- MarkupObject.cs
- DPAPIProtectedConfigurationProvider.cs
- XmlTextReaderImplHelpers.cs
- ChangeProcessor.cs
- CaseInsensitiveHashCodeProvider.cs
- PageSetupDialog.cs