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
- ProxyAttribute.cs
- TlsnegoTokenAuthenticator.cs
- CombinedGeometry.cs
- FormViewUpdatedEventArgs.cs
- XmlSignatureManifest.cs
- Int64Converter.cs
- XPathAncestorIterator.cs
- RowsCopiedEventArgs.cs
- WorkflowHostingResponseContext.cs
- RenderTargetBitmap.cs
- BulletChrome.cs
- FolderLevelBuildProviderAppliesToAttribute.cs
- SqlDataSourceEnumerator.cs
- PreviewPageInfo.cs
- SimpleMailWebEventProvider.cs
- SafeCancelMibChangeNotify.cs
- TabControl.cs
- PolicyException.cs
- DefaultPrintController.cs
- FileDialogCustomPlacesCollection.cs
- TypedTableHandler.cs
- SecureStringHasher.cs
- smtppermission.cs
- ThreadAttributes.cs
- GlobalProxySelection.cs
- TransformationRules.cs
- HtmlInputControl.cs
- SerialPinChanges.cs
- SystemEvents.cs
- ProtocolsConfigurationHandler.cs
- ListSortDescription.cs
- DateTimeParse.cs
- LambdaValue.cs
- FixedBufferAttribute.cs
- ClientBuildManagerCallback.cs
- WebCodeGenerator.cs
- CodeCatchClause.cs
- UniqueSet.cs
- PrintDialogException.cs
- Int32AnimationUsingKeyFrames.cs
- GeometryHitTestParameters.cs
- ThicknessKeyFrameCollection.cs
- Highlights.cs
- DrawTreeNodeEventArgs.cs
- WCFModelStrings.Designer.cs
- ChameleonKey.cs
- KeyValuePair.cs
- AppDomainManager.cs
- EmptyReadOnlyDictionaryInternal.cs
- TraceListeners.cs
- ContainerUIElement3D.cs
- QueryOutputWriter.cs
- AssemblyBuilder.cs
- BaseDataBoundControlDesigner.cs
- MemoryFailPoint.cs
- ImageMapEventArgs.cs
- WaitHandleCannotBeOpenedException.cs
- WebHeaderCollection.cs
- InputScopeConverter.cs
- PermissionSet.cs
- WebServicesSection.cs
- Certificate.cs
- SqlMultiplexer.cs
- PropertyEmitterBase.cs
- XmlAtomicValue.cs
- OptimizedTemplateContent.cs
- TypeDependencyAttribute.cs
- HwndSourceParameters.cs
- TablePattern.cs
- CharacterMetrics.cs
- Bezier.cs
- SafeThemeHandle.cs
- ScriptControlManager.cs
- OrthographicCamera.cs
- CollectionConverter.cs
- DataServiceProviderWrapper.cs
- Stream.cs
- FigureHelper.cs
- SafeFindHandle.cs
- AnnotationStore.cs
- XamlTypeMapper.cs
- MessageDecoder.cs
- FlagsAttribute.cs
- TransformerInfo.cs
- ConfigurationStrings.cs
- ProcessManager.cs
- SafeFileMapViewHandle.cs
- DelegatedStream.cs
- PeerNameRegistration.cs
- AdapterUtil.cs
- SharedConnectionInfo.cs
- PolyBezierSegment.cs
- Win32.cs
- QilPatternFactory.cs
- DesignerHierarchicalDataSourceView.cs
- AnimationClock.cs
- BufferBuilder.cs
- XPathScanner.cs
- ResourcesGenerator.cs
- _NegotiateClient.cs