Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XPathMultyIterator.cs
- UserControl.cs
- COM2ExtendedUITypeEditor.cs
- SkinIDTypeConverter.cs
- HttpApplicationFactory.cs
- MailHeaderInfo.cs
- XamlSerializerUtil.cs
- ConfigurationPropertyAttribute.cs
- DirtyTextRange.cs
- UnsafeCollabNativeMethods.cs
- PreservationFileWriter.cs
- UpdateManifestForBrowserApplication.cs
- Condition.cs
- LinqToSqlWrapper.cs
- AssemblyCache.cs
- DataRecordInternal.cs
- SrgsRuleRef.cs
- FixedBufferAttribute.cs
- XmlAttribute.cs
- Validator.cs
- Int16.cs
- StringFormat.cs
- Exception.cs
- SimpleWebHandlerParser.cs
- DictionaryChange.cs
- EntityCollection.cs
- RectangleHotSpot.cs
- CompileLiteralTextParser.cs
- ListBoxItemWrapperAutomationPeer.cs
- StructuredTypeEmitter.cs
- EntityContainerAssociationSetEnd.cs
- DynamicValidator.cs
- ClientBuildManagerCallback.cs
- StrongNameKeyPair.cs
- VirtualDirectoryMapping.cs
- METAHEADER.cs
- GraphicsState.cs
- KnownBoxes.cs
- ColorInterpolationModeValidation.cs
- OleDbSchemaGuid.cs
- UnsafePeerToPeerMethods.cs
- StreamGeometry.cs
- FrameworkElementAutomationPeer.cs
- WebBrowserNavigatingEventHandler.cs
- SqlBulkCopy.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- EntityViewGenerationConstants.cs
- connectionpool.cs
- ValidationErrorEventArgs.cs
- MessageHeaderInfoTraceRecord.cs
- EntityDataSourceContainerNameItem.cs
- RowCache.cs
- SecondaryIndexDefinition.cs
- CompoundFileIOPermission.cs
- OracleInternalConnection.cs
- SqlReorderer.cs
- FastPropertyAccessor.cs
- XmlNamespaceDeclarationsAttribute.cs
- RemotingConfigParser.cs
- ProfileEventArgs.cs
- RowUpdatingEventArgs.cs
- MapPathBasedVirtualPathProvider.cs
- XmlHierarchyData.cs
- CombinedGeometry.cs
- TextEditorTables.cs
- ControlEvent.cs
- WSDualHttpBindingCollectionElement.cs
- _RequestCacheProtocol.cs
- TransformerInfo.cs
- GZipStream.cs
- HttpApplicationFactory.cs
- XmlText.cs
- HtmlEncodedRawTextWriter.cs
- Content.cs
- HttpConfigurationContext.cs
- SimpleTextLine.cs
- LinqDataSourceEditData.cs
- FamilyTypefaceCollection.cs
- RealProxy.cs
- TransformerConfigurationWizardBase.cs
- CatalogZoneBase.cs
- AppearanceEditorPart.cs
- PageAsyncTaskManager.cs
- Rect.cs
- TypedDataSetSchemaImporterExtensionFx35.cs
- BitmapDecoder.cs
- XmlPreloadedResolver.cs
- HelpEvent.cs
- TextPenaltyModule.cs
- ExtensionDataObject.cs
- AssemblyAttributes.cs
- MemberDomainMap.cs
- LongMinMaxAggregationOperator.cs
- EntitySqlQueryCacheKey.cs
- XmlAttribute.cs
- CodeAttributeArgumentCollection.cs
- StringUtil.cs
- KeyGestureValueSerializer.cs
- EmptyElement.cs
- _ProxyChain.cs