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
- DirectoryLocalQuery.cs
- CodeLinePragma.cs
- XmlSchemaAppInfo.cs
- Enum.cs
- GPStream.cs
- ParameterBuilder.cs
- EditorZone.cs
- Membership.cs
- EnlistmentState.cs
- Tool.cs
- RootCodeDomSerializer.cs
- IPHostEntry.cs
- RotateTransform.cs
- XmlComplianceUtil.cs
- ResourceExpressionBuilder.cs
- FixedSOMPageConstructor.cs
- StylusOverProperty.cs
- PeerDuplexChannel.cs
- XPathPatternParser.cs
- __ComObject.cs
- AppDomainAttributes.cs
- httpapplicationstate.cs
- CompiledAction.cs
- Membership.cs
- CompositeScriptReference.cs
- DiagnosticSection.cs
- PriorityQueue.cs
- QueryUtil.cs
- GetParentChain.cs
- HyperlinkAutomationPeer.cs
- MailHeaderInfo.cs
- InfoCardRSAPKCS1KeyExchangeFormatter.cs
- CodePropertyReferenceExpression.cs
- FileVersion.cs
- ContentDisposition.cs
- Win32MouseDevice.cs
- Crc32Helper.cs
- ProjectionPlan.cs
- IApplicationTrustManager.cs
- PropertyItemInternal.cs
- AnnotationAdorner.cs
- GeneralTransform3D.cs
- ObjectPropertyMapping.cs
- CustomErrorsSection.cs
- ConcurrentDictionary.cs
- ButtonBaseAdapter.cs
- SqlComparer.cs
- AdjustableArrowCap.cs
- ExpanderAutomationPeer.cs
- Solver.cs
- WpfWebRequestHelper.cs
- DataGridViewTextBoxCell.cs
- SafeViewOfFileHandle.cs
- UnsafeNativeMethods.cs
- QilFunction.cs
- AssemblyResourceLoader.cs
- SubstitutionDesigner.cs
- LockRecursionException.cs
- DocumentsTrace.cs
- DateTimeParse.cs
- securitycriticaldataClass.cs
- XmlIgnoreAttribute.cs
- DesignSurfaceServiceContainer.cs
- CompiledQuery.cs
- MetadataItemSerializer.cs
- ListView.cs
- DataGridColumnEventArgs.cs
- milexports.cs
- ClientCredentialsElement.cs
- Image.cs
- MulticastNotSupportedException.cs
- OrderPreservingPipeliningMergeHelper.cs
- DataObjectMethodAttribute.cs
- Size3D.cs
- LicenseException.cs
- XmlWrappingReader.cs
- SparseMemoryStream.cs
- PagerSettings.cs
- StreamWriter.cs
- CurrentChangedEventManager.cs
- DropShadowEffect.cs
- CryptoConfig.cs
- ObjectDataSource.cs
- DefaultValidator.cs
- MessageSecurityOverTcpElement.cs
- SqlInternalConnectionSmi.cs
- WebConfigManager.cs
- ArgumentNullException.cs
- ModuleBuilder.cs
- MediaTimeline.cs
- ResourceCategoryAttribute.cs
- UnsafeNativeMethodsTablet.cs
- SequentialOutput.cs
- DesignerTransaction.cs
- WCFModelStrings.Designer.cs
- XmlSerializableReader.cs
- SqlUtils.cs
- StructureChangedEventArgs.cs
- MetadataArtifactLoaderResource.cs
- TextPattern.cs