Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- Compiler.cs
- IndependentlyAnimatedPropertyMetadata.cs
- XmlWellformedWriterHelpers.cs
- XmlAnyAttributeAttribute.cs
- TextServicesPropertyRanges.cs
- SetterBaseCollection.cs
- FactoryId.cs
- TableLayoutPanelResizeGlyph.cs
- Win32Exception.cs
- EmptyEnumerator.cs
- xamlnodes.cs
- LinkButton.cs
- ToolboxItemFilterAttribute.cs
- Separator.cs
- unsafeIndexingFilterStream.cs
- OperationResponse.cs
- DesignerActionMethodItem.cs
- MetadataExchangeBindings.cs
- WebPartEventArgs.cs
- OrderedDictionary.cs
- ActivityLocationReferenceEnvironment.cs
- Model3D.cs
- LinkedList.cs
- EditorPartChrome.cs
- coordinator.cs
- RowBinding.cs
- BufferedReadStream.cs
- DecoderFallbackWithFailureFlag.cs
- NetDispatcherFaultException.cs
- XmlSortKeyAccumulator.cs
- Propagator.cs
- _SslState.cs
- HebrewCalendar.cs
- BevelBitmapEffect.cs
- MethodExpr.cs
- XmlTextReaderImpl.cs
- ObjectDataSourceView.cs
- TreeNodeClickEventArgs.cs
- StringValidatorAttribute.cs
- XmlSerializerFactory.cs
- Vector3D.cs
- RealizationDrawingContextWalker.cs
- LiteralSubsegment.cs
- EdmPropertyAttribute.cs
- DataSysAttribute.cs
- TrayIconDesigner.cs
- ScrollBar.cs
- LocationFactory.cs
- BufferAllocator.cs
- DataControlCommands.cs
- EdmFunction.cs
- BinaryObjectReader.cs
- SemanticValue.cs
- ThreadStateException.cs
- BindUriHelper.cs
- SafeLocalMemHandle.cs
- Int64Converter.cs
- TimelineClockCollection.cs
- NameTable.cs
- SettingsBase.cs
- EntityTransaction.cs
- DesignerLoader.cs
- StrongNamePublicKeyBlob.cs
- DBBindings.cs
- CodeRegionDirective.cs
- CharAnimationUsingKeyFrames.cs
- XmlLanguage.cs
- ListBindingHelper.cs
- XpsException.cs
- RSAPKCS1SignatureFormatter.cs
- HtmlTernaryTree.cs
- ClientSession.cs
- SoapAttributeOverrides.cs
- FormsAuthenticationUser.cs
- And.cs
- X509Chain.cs
- HttpValueCollection.cs
- DPTypeDescriptorContext.cs
- PromptEventArgs.cs
- SendMailErrorEventArgs.cs
- ClassicBorderDecorator.cs
- WindowHideOrCloseTracker.cs
- TextEndOfSegment.cs
- EncoderParameters.cs
- XsltContext.cs
- TriState.cs
- ActivityInfo.cs
- Html32TextWriter.cs
- Object.cs
- TitleStyle.cs
- HttpWriter.cs
- ClientSideProviderDescription.cs
- StringUtil.cs
- ProfileSettingsCollection.cs
- PeerNameRegistration.cs
- DatatypeImplementation.cs
- EventMappingSettingsCollection.cs
- Hex.cs
- HebrewCalendar.cs
- ResourcesChangeInfo.cs