Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- LowerCaseStringConverter.cs
- ControlsConfig.cs
- MD5CryptoServiceProvider.cs
- GroupBox.cs
- CollectionDataContractAttribute.cs
- AspCompat.cs
- PointAnimationBase.cs
- CachedTypeface.cs
- BitmapInitialize.cs
- SqlError.cs
- ConfigurationSettings.cs
- ApplicationBuildProvider.cs
- FilterEventArgs.cs
- CommonServiceBehaviorElement.cs
- SnapLine.cs
- TableLayoutCellPaintEventArgs.cs
- RootBrowserWindow.cs
- TileBrush.cs
- ListBox.cs
- HTMLTextWriter.cs
- CultureSpecificCharacterBufferRange.cs
- SqlNodeAnnotations.cs
- QuadraticBezierSegment.cs
- ManualResetEvent.cs
- EpmSyndicationContentDeSerializer.cs
- PageCodeDomTreeGenerator.cs
- DigestComparer.cs
- CheckPair.cs
- DataServiceConfiguration.cs
- DataContractAttribute.cs
- WorkflowElementDialog.cs
- ColumnResizeUndoUnit.cs
- ResourcesBuildProvider.cs
- DataGridColumnCollection.cs
- UIElement.cs
- Ops.cs
- QueryContinueDragEventArgs.cs
- WebConfigurationFileMap.cs
- HostingEnvironmentException.cs
- ZipIOCentralDirectoryBlock.cs
- TraceListeners.cs
- MemoryMappedViewAccessor.cs
- IChannel.cs
- DesignerVerb.cs
- ClientTargetSection.cs
- TextSelection.cs
- WindowsRegion.cs
- StateManager.cs
- XsltSettings.cs
- LambdaCompiler.Logical.cs
- ClientProxyGenerator.cs
- TextReader.cs
- ISessionStateStore.cs
- AVElementHelper.cs
- HtmlHead.cs
- ColumnMapVisitor.cs
- MULTI_QI.cs
- CustomPopupPlacement.cs
- HtmlHead.cs
- EntityUtil.cs
- MobileTemplatedControlDesigner.cs
- OleAutBinder.cs
- WebConvert.cs
- CodeObjectCreateExpression.cs
- DataTemplate.cs
- VoiceObjectToken.cs
- StructuredProperty.cs
- DirectionalLight.cs
- LassoSelectionBehavior.cs
- DefaultValueMapping.cs
- ToolStripDropDownButton.cs
- PreDigestedSignedInfo.cs
- __Error.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- MatrixConverter.cs
- TextDpi.cs
- ControlPaint.cs
- OracleLob.cs
- DataGridItem.cs
- Keywords.cs
- Route.cs
- AmbiguousMatchException.cs
- MyContact.cs
- StyleHelper.cs
- PenThreadWorker.cs
- DataServiceProcessingPipeline.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- ProxyWebPartManager.cs
- EditorResources.cs
- CodeExpressionCollection.cs
- PartialCachingAttribute.cs
- FilteredReadOnlyMetadataCollection.cs
- SynthesizerStateChangedEventArgs.cs
- WindowsScroll.cs
- SiteMapDataSourceDesigner.cs
- DesignerDataParameter.cs
- TextTreeUndoUnit.cs
- ExtensionFile.cs
- MessageDesigner.cs
- DataFieldConverter.cs