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
- NumericUpDownAccelerationCollection.cs
- Page.cs
- StateMachineAction.cs
- InvokeBase.cs
- SpecialTypeDataContract.cs
- LocalClientSecuritySettings.cs
- ListViewItemMouseHoverEvent.cs
- RootBuilder.cs
- EncodingInfo.cs
- FormatConvertedBitmap.cs
- ListDictionaryInternal.cs
- Image.cs
- ObjectDataSourceView.cs
- EmbeddedMailObject.cs
- LazyTextWriterCreator.cs
- WorkflowHostingEndpoint.cs
- URLMembershipCondition.cs
- TextClipboardData.cs
- FixedTextPointer.cs
- DecimalAnimation.cs
- TextParentUndoUnit.cs
- CurrentChangingEventManager.cs
- TracedNativeMethods.cs
- XmlAggregates.cs
- DateTimeParse.cs
- TraceHandlerErrorFormatter.cs
- GPRECT.cs
- TextAutomationPeer.cs
- SimplePropertyEntry.cs
- _ScatterGatherBuffers.cs
- ExtensionDataObject.cs
- ObjectDataSourceView.cs
- OdbcHandle.cs
- PropertyItem.cs
- InternalConfigRoot.cs
- ContainerVisual.cs
- SafeLibraryHandle.cs
- RemoteAsymmetricSignatureFormatter.cs
- ParameterToken.cs
- CheckPair.cs
- XmlMtomReader.cs
- FormViewPageEventArgs.cs
- HWStack.cs
- XmlBoundElement.cs
- RouteData.cs
- HorizontalAlignConverter.cs
- StringFormat.cs
- WorkflowMarkupSerializationProvider.cs
- CustomCategoryAttribute.cs
- TemplateEditingVerb.cs
- DbDataRecord.cs
- RelationshipFixer.cs
- SqlBulkCopyColumnMappingCollection.cs
- SafeSecurityHandles.cs
- ComPlusAuthorization.cs
- ConfigurationValidatorBase.cs
- ControlValuePropertyAttribute.cs
- Storyboard.cs
- PersonalizationDictionary.cs
- ProviderBase.cs
- IisTraceListener.cs
- SoapAttributeOverrides.cs
- OdbcError.cs
- GridItemCollection.cs
- Panel.cs
- GridViewColumnHeader.cs
- TextFormatterContext.cs
- Splitter.cs
- SigningCredentials.cs
- AtomServiceDocumentSerializer.cs
- SQLConvert.cs
- InvalidCastException.cs
- ListViewHitTestInfo.cs
- RuntimeIdentifierPropertyAttribute.cs
- SqlCacheDependency.cs
- ResourceDictionaryCollection.cs
- SmiTypedGetterSetter.cs
- SoapTypeAttribute.cs
- SqlProcedureAttribute.cs
- MD5CryptoServiceProvider.cs
- xml.cs
- PhysicalFontFamily.cs
- DataGridViewButtonCell.cs
- DetailsViewUpdatedEventArgs.cs
- LogPolicy.cs
- OdbcTransaction.cs
- XmlHierarchicalDataSourceView.cs
- NumericExpr.cs
- TokenizerHelper.cs
- ExpressionPrinter.cs
- ChannelDispatcherCollection.cs
- DataGrid.cs
- TextStore.cs
- XPathArrayIterator.cs
- ByteAnimationUsingKeyFrames.cs
- XmlDocument.cs
- BinaryReader.cs
- EdmComplexTypeAttribute.cs
- MatrixConverter.cs
- PointHitTestResult.cs