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
- WebPartUserCapability.cs
- StrokeCollection2.cs
- SafeEventLogWriteHandle.cs
- UserControlAutomationPeer.cs
- XmlSchemaProviderAttribute.cs
- TagMapCollection.cs
- MachineKeyConverter.cs
- EditorZoneBase.cs
- Transform.cs
- XmlEventCache.cs
- QualificationDataAttribute.cs
- PingReply.cs
- SqlDataSourceTableQuery.cs
- SortExpressionBuilder.cs
- WebPartEditorApplyVerb.cs
- WebSysDescriptionAttribute.cs
- ByteStorage.cs
- StringComparer.cs
- AxHost.cs
- DirectoryGroupQuery.cs
- XsltInput.cs
- TemplateKey.cs
- DataSourceView.cs
- FontUnitConverter.cs
- VisualStyleElement.cs
- XmlConvert.cs
- KnowledgeBase.cs
- ObjectStateFormatter.cs
- MetabaseSettings.cs
- WebPartVerbsEventArgs.cs
- RetrieveVirtualItemEventArgs.cs
- AuthenticationException.cs
- InputReferenceExpression.cs
- PasswordTextContainer.cs
- CodeTypeConstructor.cs
- XmlSerializer.cs
- OpacityConverter.cs
- TextPointerBase.cs
- DataBoundControl.cs
- ValidationHelper.cs
- InertiaExpansionBehavior.cs
- DateTimeFormatInfo.cs
- CodePageEncoding.cs
- XmlObjectSerializerWriteContext.cs
- FileEnumerator.cs
- UrlMappingCollection.cs
- SchemaImporterExtensionElement.cs
- Win32Native.cs
- Msmq4SubqueuePoisonHandler.cs
- ProfileSettings.cs
- RemoteArgument.cs
- QueryPageSettingsEventArgs.cs
- FormViewDeletedEventArgs.cs
- RolePrincipal.cs
- MeasureData.cs
- StreamWriter.cs
- Timer.cs
- PreviewPrintController.cs
- TabPageDesigner.cs
- ListViewItem.cs
- ElementFactory.cs
- FormViewPageEventArgs.cs
- DesignTimeVisibleAttribute.cs
- EntityDataSourceDataSelectionPanel.designer.cs
- CommonObjectSecurity.cs
- StorageComplexPropertyMapping.cs
- UnknownExceptionActionHelper.cs
- ExpressionBinding.cs
- UpdateExpressionVisitor.cs
- GeneralEndpointIdentity.cs
- Calendar.cs
- GeneratedContractType.cs
- MsmqIntegrationBindingElement.cs
- OracleString.cs
- EncryptedData.cs
- StateMachineAction.cs
- FixUpCollection.cs
- DataContract.cs
- ImageMap.cs
- PostBackTrigger.cs
- BypassElement.cs
- SecurityResources.cs
- XmlSchemaValidator.cs
- DesignTableCollection.cs
- _SSPIWrapper.cs
- VisualStyleTypesAndProperties.cs
- KeysConverter.cs
- MarkupCompilePass1.cs
- RSAOAEPKeyExchangeDeformatter.cs
- OdbcDataAdapter.cs
- TaskForm.cs
- VisualBasic.cs
- TraceSource.cs
- DataGridSortCommandEventArgs.cs
- XmlChildEnumerator.cs
- XmlNode.cs
- FloaterBaseParagraph.cs
- SmtpDateTime.cs
- FrameworkReadOnlyPropertyMetadata.cs
- RootBrowserWindow.cs