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
- DrawingState.cs
- PrintDialog.cs
- GeometryCombineModeValidation.cs
- HttpCacheVary.cs
- PassportAuthentication.cs
- CodeRegionDirective.cs
- WindowAutomationPeer.cs
- RegexGroupCollection.cs
- FixedTextBuilder.cs
- DbMetaDataCollectionNames.cs
- SwitchLevelAttribute.cs
- BooleanKeyFrameCollection.cs
- ControlFilterExpression.cs
- SqlCommand.cs
- PasswordTextContainer.cs
- DateTimeStorage.cs
- ProjectionCamera.cs
- HwndStylusInputProvider.cs
- QueueProcessor.cs
- bindurihelper.cs
- ConfigurationManagerHelperFactory.cs
- Rectangle.cs
- DataRecordInfo.cs
- PolicyFactory.cs
- Int16.cs
- GlobalProxySelection.cs
- PartitionResolver.cs
- ClientType.cs
- RepeatButton.cs
- SmtpFailedRecipientException.cs
- BaseValidator.cs
- BuildDependencySet.cs
- SapiAttributeParser.cs
- DrawingAttributesDefaultValueFactory.cs
- ColumnProvider.cs
- DelegateBodyWriter.cs
- SmtpClient.cs
- ContentPosition.cs
- DecimalStorage.cs
- StubHelpers.cs
- PresentationAppDomainManager.cs
- DataGridCellInfo.cs
- RandomNumberGenerator.cs
- ItemMap.cs
- XhtmlBasicLabelAdapter.cs
- SmtpMail.cs
- Profiler.cs
- RegularExpressionValidator.cs
- FixedSOMTableRow.cs
- FrameworkContentElement.cs
- TransactionException.cs
- InvalidProgramException.cs
- WebScriptClientGenerator.cs
- UpdateRecord.cs
- ProfileSettings.cs
- ThreadStaticAttribute.cs
- CodeIdentifiers.cs
- FixedHyperLink.cs
- CharEntityEncoderFallback.cs
- NameTable.cs
- PersonalizationState.cs
- HitTestDrawingContextWalker.cs
- OperatingSystemVersionCheck.cs
- HandlerBase.cs
- _NativeSSPI.cs
- ReaderWriterLockSlim.cs
- GridViewCellAutomationPeer.cs
- GridViewPageEventArgs.cs
- WebPartsPersonalizationAuthorization.cs
- ConvertEvent.cs
- FixedPage.cs
- SQLByteStorage.cs
- Base64Stream.cs
- FindCriteriaCD1.cs
- StreamUpgradeBindingElement.cs
- WorkflowInstanceSuspendedRecord.cs
- DataServiceBuildProvider.cs
- filewebrequest.cs
- DragEventArgs.cs
- MexTcpBindingElement.cs
- SubtreeProcessor.cs
- XPathBinder.cs
- MimeBasePart.cs
- HierarchicalDataBoundControl.cs
- HyperlinkAutomationPeer.cs
- Convert.cs
- WhitespaceRule.cs
- AsyncPostBackErrorEventArgs.cs
- Parameter.cs
- DeviceContext.cs
- WSSecurityPolicy12.cs
- TimeoutException.cs
- CollectionMarkupSerializer.cs
- ToolStripDropDown.cs
- ObjectDataSourceStatusEventArgs.cs
- GenericTypeParameterBuilder.cs
- ClearTypeHintValidation.cs
- HttpCapabilitiesBase.cs
- _SafeNetHandles.cs
- EmptyReadOnlyDictionaryInternal.cs