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
- MatrixAnimationBase.cs
- FilteredXmlReader.cs
- DesignerImageAdapter.cs
- SeekableMessageNavigator.cs
- CultureSpecificStringDictionary.cs
- TreeBuilderBamlTranslator.cs
- ToolStripOverflowButton.cs
- Directory.cs
- IPEndPoint.cs
- DnsPermission.cs
- RouteParametersHelper.cs
- ResourceCategoryAttribute.cs
- InheritanceRules.cs
- Transform3DGroup.cs
- NameTable.cs
- GPRECTF.cs
- Compilation.cs
- Console.cs
- ExtensibleClassFactory.cs
- AuthorizationRuleCollection.cs
- InteropBitmapSource.cs
- AnchoredBlock.cs
- MatrixTransform3D.cs
- ScriptMethodAttribute.cs
- TextDecorationCollection.cs
- StrongNameKeyPair.cs
- GeometryValueSerializer.cs
- SecurityTraceRecordHelper.cs
- ErrorLog.cs
- PositiveTimeSpanValidator.cs
- InputDevice.cs
- Style.cs
- Privilege.cs
- UiaCoreTypesApi.cs
- SHA384Managed.cs
- arc.cs
- SqlConnectionPoolProviderInfo.cs
- XamlWriter.cs
- SectionRecord.cs
- LinqMaximalSubtreeNominator.cs
- XmlLanguageConverter.cs
- ExtentJoinTreeNode.cs
- GridLength.cs
- ApplicationSettingsBase.cs
- TextTrailingWordEllipsis.cs
- DataObjectFieldAttribute.cs
- HeaderedItemsControl.cs
- ModulesEntry.cs
- SiteMapNode.cs
- BamlStream.cs
- CodeTypeDeclarationCollection.cs
- Cell.cs
- ConfigXmlComment.cs
- ComponentResourceManager.cs
- TreeViewDesigner.cs
- PTUtility.cs
- RowUpdatedEventArgs.cs
- EventLogTraceListener.cs
- XmlSchemaSimpleTypeRestriction.cs
- SmtpDateTime.cs
- DataControlLinkButton.cs
- TypedDatasetGenerator.cs
- PropertyPushdownHelper.cs
- CategoryState.cs
- SQLInt16Storage.cs
- PageTheme.cs
- LinqDataSourceUpdateEventArgs.cs
- RbTree.cs
- SaveFileDialogDesigner.cs
- RegistrySecurity.cs
- PointLightBase.cs
- PasswordDeriveBytes.cs
- TileModeValidation.cs
- InvokeHandlers.cs
- PropertyIDSet.cs
- NavigationPropertyAccessor.cs
- TreeNodeCollection.cs
- PrivateFontCollection.cs
- FunctionGenerator.cs
- RegexRunnerFactory.cs
- SecUtil.cs
- KeyNotFoundException.cs
- CatalogPartChrome.cs
- _LocalDataStoreMgr.cs
- ListViewAutomationPeer.cs
- DeferredElementTreeState.cs
- DiagnosticsConfigurationHandler.cs
- AnnotationComponentChooser.cs
- LazyTextWriterCreator.cs
- CacheSection.cs
- GroupItemAutomationPeer.cs
- ButtonField.cs
- WebPartUserCapability.cs
- QueryGeneratorBase.cs
- DataGridViewSelectedColumnCollection.cs
- ControlTemplate.cs
- Binding.cs
- GenerateScriptTypeAttribute.cs
- EndpointInfo.cs
- TextBreakpoint.cs