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
- MissingFieldException.cs
- TrailingSpaceComparer.cs
- PtsHost.cs
- TypeGeneratedEventArgs.cs
- ScrollProviderWrapper.cs
- DocumentViewerBaseAutomationPeer.cs
- DocumentXmlWriter.cs
- EmptyCollection.cs
- DBCSCodePageEncoding.cs
- PathFigureCollectionConverter.cs
- SpeechRecognizer.cs
- UICuesEvent.cs
- PeerSecurityManager.cs
- ThousandthOfEmRealDoubles.cs
- DocumentEventArgs.cs
- KoreanCalendar.cs
- Blend.cs
- SqlConnectionStringBuilder.cs
- BoundingRectTracker.cs
- ListItemCollection.cs
- ASCIIEncoding.cs
- OleDbConnectionFactory.cs
- XPathArrayIterator.cs
- DataPager.cs
- Point.cs
- BrowsableAttribute.cs
- StreamSecurityUpgradeInitiatorAsyncResult.cs
- ProxyWebPart.cs
- BrowserDefinition.cs
- XmlIncludeAttribute.cs
- InternalConfigSettingsFactory.cs
- DataGridViewCell.cs
- PageCatalogPartDesigner.cs
- IIS7WorkerRequest.cs
- ReflectEventDescriptor.cs
- StringStorage.cs
- NativeMethods.cs
- __ComObject.cs
- SqlEnums.cs
- SocketAddress.cs
- Ppl.cs
- DataViewManager.cs
- ToolStripItemRenderEventArgs.cs
- PropertyChangedEventManager.cs
- RegistrationServices.cs
- ControlHelper.cs
- DesigntimeLicenseContextSerializer.cs
- ProviderIncompatibleException.cs
- DbFunctionCommandTree.cs
- SettingsPropertyIsReadOnlyException.cs
- FixedPosition.cs
- EndPoint.cs
- WebBrowserProgressChangedEventHandler.cs
- ObjectMemberMapping.cs
- UInt32Storage.cs
- CompoundFileIOPermission.cs
- ToolboxItemAttribute.cs
- TextRunCacheImp.cs
- DetailsViewModeEventArgs.cs
- UInt64.cs
- StylusPointDescription.cs
- ExpandoClass.cs
- SurrogateEncoder.cs
- StreamDocument.cs
- DbException.cs
- UInt16Storage.cs
- MsmqIntegrationElement.cs
- WindowsStatusBar.cs
- CodePageEncoding.cs
- ContractSearchPattern.cs
- ProbeMatches11.cs
- Annotation.cs
- DocumentReferenceCollection.cs
- RtfNavigator.cs
- DataGridCaption.cs
- sqlinternaltransaction.cs
- MaskedTextBox.cs
- Literal.cs
- TimeSpanValidator.cs
- Dictionary.cs
- RectangleGeometry.cs
- CharacterBuffer.cs
- AccessDataSourceWizardForm.cs
- ZipFileInfoCollection.cs
- Int16Converter.cs
- InputGestureCollection.cs
- BaseParaClient.cs
- SqlFunctions.cs
- List.cs
- ToolStripSeparatorRenderEventArgs.cs
- xmlglyphRunInfo.cs
- CustomErrorsSectionWrapper.cs
- IconConverter.cs
- ContextMenu.cs
- QilGeneratorEnv.cs
- DBDataPermission.cs
- HtmlInputButton.cs
- PeerNameRecord.cs
- ClrPerspective.cs
- XslAst.cs