Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / ManagedLibraries / Remoting / Channels / IPC / PipeStream.cs / 1305376 / PipeStream.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //========================================================================== // File: PipeStream.cs // // Summary: Stream used for reading from a named pipe // Author: [....]@microsoft.com //========================================================================= using System; using System.IO; using System.Runtime.Remoting; namespace System.Runtime.Remoting.Channels.Ipc { // Basically the same as NetworkStream, but adds support for timeouts. internal sealed class PipeStream : Stream { private IpcPort _port; private int _timeout = 0; // throw timout exception if a read takes longer than this many milliseconds public PipeStream(IpcPort port) { if (port == null) throw new ArgumentNullException("port"); _port = port; } // SocketStream // Stream implementation public override bool CanRead { get { return true; } } public override bool CanSeek { get { return false; } } public override bool CanWrite { get { return true; } } public override long Length { get { throw new NotSupportedException(); } } public override long Position { get { throw new NotSupportedException(); } set { throw new NotSupportedException(); } } // Position public override long Seek(long offset, SeekOrigin origin) { throw new NotSupportedException(); } public override int Read(byte[] buffer, int offset, int size) { if (_timeout <= 0) { return _port.Read(buffer, offset, size); } else { IAsyncResult ar = _port.BeginRead(buffer, offset, size, null, null); if (_timeout>0 && !ar.IsCompleted) { ar.AsyncWaitHandle.WaitOne(_timeout, false); if (!ar.IsCompleted) throw new RemotingTimeoutException(); } return _port.EndRead(ar); } } // Read public override void Write(byte[] buffer, int offset, int count) { _port.Write(buffer, offset, count); } // Write protected override void Dispose(bool disposing) { try { if (disposing) _port.Dispose(); } finally { base.Dispose(disposing); } } public override void Flush() { } public override IAsyncResult BeginRead( byte[] buffer, int offset, int size, AsyncCallback callback, Object state) { IAsyncResult asyncResult = _port.BeginRead( buffer, offset, size, callback, state); return asyncResult; } // BeginRead public override int EndRead(IAsyncResult asyncResult) { return _port.EndRead(asyncResult); } // EndRead public override IAsyncResult BeginWrite( byte[] buffer, int offset, int size, AsyncCallback callback, Object state) { throw new NotSupportedException(); } // BeginWrite public override void EndWrite(IAsyncResult asyncResult) { throw new NotSupportedException(); } // EndWrite public override void SetLength(long value) { throw new NotSupportedException(); } } // class SocketStream } // namespace System.Runtime.Remoting.Channels // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //========================================================================== // File: PipeStream.cs // // Summary: Stream used for reading from a named pipe // Author: [....]@microsoft.com //========================================================================= using System; using System.IO; using System.Runtime.Remoting; namespace System.Runtime.Remoting.Channels.Ipc { // Basically the same as NetworkStream, but adds support for timeouts. internal sealed class PipeStream : Stream { private IpcPort _port; private int _timeout = 0; // throw timout exception if a read takes longer than this many milliseconds public PipeStream(IpcPort port) { if (port == null) throw new ArgumentNullException("port"); _port = port; } // SocketStream // Stream implementation public override bool CanRead { get { return true; } } public override bool CanSeek { get { return false; } } public override bool CanWrite { get { return true; } } public override long Length { get { throw new NotSupportedException(); } } public override long Position { get { throw new NotSupportedException(); } set { throw new NotSupportedException(); } } // Position public override long Seek(long offset, SeekOrigin origin) { throw new NotSupportedException(); } public override int Read(byte[] buffer, int offset, int size) { if (_timeout <= 0) { return _port.Read(buffer, offset, size); } else { IAsyncResult ar = _port.BeginRead(buffer, offset, size, null, null); if (_timeout>0 && !ar.IsCompleted) { ar.AsyncWaitHandle.WaitOne(_timeout, false); if (!ar.IsCompleted) throw new RemotingTimeoutException(); } return _port.EndRead(ar); } } // Read public override void Write(byte[] buffer, int offset, int count) { _port.Write(buffer, offset, count); } // Write protected override void Dispose(bool disposing) { try { if (disposing) _port.Dispose(); } finally { base.Dispose(disposing); } } public override void Flush() { } public override IAsyncResult BeginRead( byte[] buffer, int offset, int size, AsyncCallback callback, Object state) { IAsyncResult asyncResult = _port.BeginRead( buffer, offset, size, callback, state); return asyncResult; } // BeginRead public override int EndRead(IAsyncResult asyncResult) { return _port.EndRead(asyncResult); } // EndRead public override IAsyncResult BeginWrite( byte[] buffer, int offset, int size, AsyncCallback callback, Object state) { throw new NotSupportedException(); } // BeginWrite public override void EndWrite(IAsyncResult asyncResult) { throw new NotSupportedException(); } // EndWrite public override void SetLength(long value) { throw new NotSupportedException(); } } // class SocketStream } // namespace System.Runtime.Remoting.Channels // 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
- Odbc32.cs
- TreeSet.cs
- SelectionRangeConverter.cs
- MouseGestureConverter.cs
- CodeSnippetTypeMember.cs
- SkinBuilder.cs
- SerializationAttributes.cs
- CollectionViewGroup.cs
- XmlSerializerVersionAttribute.cs
- ByteStreamGeometryContext.cs
- CompiledRegexRunner.cs
- FullTrustAssemblyCollection.cs
- NotFiniteNumberException.cs
- Style.cs
- BamlRecordReader.cs
- BaseComponentEditor.cs
- XmlCharType.cs
- KeyFrames.cs
- DefaultPropertyAttribute.cs
- TextRunTypographyProperties.cs
- BooleanAnimationUsingKeyFrames.cs
- RowType.cs
- FlowLayout.cs
- BStrWrapper.cs
- Processor.cs
- Object.cs
- Bitmap.cs
- X509CertificateClaimSet.cs
- CompositeScriptReference.cs
- SerialErrors.cs
- PrivilegedConfigurationManager.cs
- AnnotationResource.cs
- MobileCapabilities.cs
- TraceHwndHost.cs
- ZoomComboBox.cs
- WebOperationContext.cs
- SqlConnectionPoolProviderInfo.cs
- SQLDateTimeStorage.cs
- HwndSourceKeyboardInputSite.cs
- XmlFormatWriterGenerator.cs
- Thickness.cs
- DataPagerFieldCommandEventArgs.cs
- ComplexTypeEmitter.cs
- XmlElement.cs
- AndCondition.cs
- BaseAutoFormat.cs
- SelectionBorderGlyph.cs
- WindowsPen.cs
- DataPagerFieldItem.cs
- TraceSection.cs
- InvalidPropValue.cs
- AssociationType.cs
- NamedPipeProcessProtocolHandler.cs
- BuildProvider.cs
- TypeExtensionSerializer.cs
- DelimitedListTraceListener.cs
- ContextMenuStrip.cs
- ResourceContainer.cs
- MergeLocalizationDirectives.cs
- BodyWriter.cs
- DoubleSumAggregationOperator.cs
- ServiceAuthorizationBehavior.cs
- NavigateEvent.cs
- ChannelManagerBase.cs
- XXXInfos.cs
- WebWorkflowRole.cs
- SamlAssertion.cs
- IgnoreFlushAndCloseStream.cs
- AdRotator.cs
- TextElementCollectionHelper.cs
- FileVersionInfo.cs
- UnsafeNativeMethodsCLR.cs
- GZipDecoder.cs
- PrePrepareMethodAttribute.cs
- XsltInput.cs
- GenericTextProperties.cs
- SqlConnectionPoolProviderInfo.cs
- GradientStopCollection.cs
- TreeNodeConverter.cs
- DataControlExtensions.cs
- ColumnBinding.cs
- BrowserCapabilitiesFactoryBase.cs
- DefaultHttpHandler.cs
- ByteAnimationUsingKeyFrames.cs
- PeerMaintainer.cs
- PageHandlerFactory.cs
- ColumnMap.cs
- PerformanceCountersElement.cs
- HideDisabledControlAdapter.cs
- ConfigXmlElement.cs
- DurableOperationContext.cs
- ApplyHostConfigurationBehavior.cs
- BinaryObjectReader.cs
- WebPartManager.cs
- TrackingStringDictionary.cs
- FactoryMaker.cs
- NamedPipeAppDomainProtocolHandler.cs
- SqlUserDefinedTypeAttribute.cs
- KnownTypesHelper.cs
- PropertyRef.cs