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
- Pair.cs
- GenericNameHandler.cs
- PeerContact.cs
- WithParamAction.cs
- DataDocumentXPathNavigator.cs
- APCustomTypeDescriptor.cs
- RenderCapability.cs
- XmlNamespaceManager.cs
- TokenBasedSetEnumerator.cs
- XmlWrappingWriter.cs
- DataControlField.cs
- EntityDataSourceSelectingEventArgs.cs
- ScrollPattern.cs
- WindowsBrush.cs
- BoundField.cs
- NumericExpr.cs
- ApplicationFileParser.cs
- ReflectTypeDescriptionProvider.cs
- Html32TextWriter.cs
- XmlMemberMapping.cs
- FileAuthorizationModule.cs
- EntityDesignerBuildProvider.cs
- BamlRecordHelper.cs
- WizardPanelChangingEventArgs.cs
- XamlGridLengthSerializer.cs
- BrowserCapabilitiesCompiler.cs
- RadioButtonList.cs
- SEHException.cs
- SqlInternalConnectionTds.cs
- SystemTcpStatistics.cs
- _TimerThread.cs
- XmlSchemaSimpleContentExtension.cs
- Command.cs
- SingleKeyFrameCollection.cs
- AttachedPropertyMethodSelector.cs
- CloseSequence.cs
- RelationshipManager.cs
- PanelDesigner.cs
- documentation.cs
- HtmlElementEventArgs.cs
- FrameworkTemplate.cs
- KeyedHashAlgorithm.cs
- ScrollChrome.cs
- XamlPathDataSerializer.cs
- sqlser.cs
- OutputWindow.cs
- XmlSerializer.cs
- PerformanceCountersElement.cs
- FixedPageProcessor.cs
- ToolStripManager.cs
- RemoteCryptoDecryptRequest.cs
- FocusManager.cs
- DataControlButton.cs
- ConsoleTraceListener.cs
- TransformerConfigurationWizardBase.cs
- MarkedHighlightComponent.cs
- SourceElementsCollection.cs
- NamespaceQuery.cs
- DataGridViewRowEventArgs.cs
- Accessors.cs
- RemoteCryptoRsaServiceProvider.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- UnsafeNativeMethods.cs
- SqlBuilder.cs
- WsdlServiceChannelBuilder.cs
- SpnegoTokenAuthenticator.cs
- CurrentChangedEventManager.cs
- SchemaElementLookUpTable.cs
- TextElementCollection.cs
- XmlSchemaIdentityConstraint.cs
- DCSafeHandle.cs
- XmlSerializableWriter.cs
- TextBox.cs
- ResourceCategoryAttribute.cs
- Logging.cs
- WebRequestModulesSection.cs
- DbDataSourceEnumerator.cs
- DoubleLinkListEnumerator.cs
- DataBindingList.cs
- FilteredAttributeCollection.cs
- RadialGradientBrush.cs
- TextTreeTextBlock.cs
- UrlUtility.cs
- BuildProvidersCompiler.cs
- OdbcErrorCollection.cs
- SizeFConverter.cs
- DataGridAutoGeneratingColumnEventArgs.cs
- UriParserTemplates.cs
- GradientStop.cs
- TableHeaderCell.cs
- QilBinary.cs
- oledbconnectionstring.cs
- HitTestWithPointDrawingContextWalker.cs
- Int16KeyFrameCollection.cs
- _HTTPDateParse.cs
- DbDataRecord.cs
- ServiceModelConfigurationElementCollection.cs
- InfoCardArgumentException.cs
- Camera.cs
- Attributes.cs