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
- WmlLiteralTextAdapter.cs
- CodeRegionDirective.cs
- FaultHandlingFilter.cs
- DataStreamFromComStream.cs
- DispatcherTimer.cs
- SqlDataRecord.cs
- Calendar.cs
- Light.cs
- HandoffBehavior.cs
- InternalBase.cs
- DataObject.cs
- ObjectFullSpanRewriter.cs
- ToolboxCategory.cs
- GridViewRowCollection.cs
- AmbiguousMatchException.cs
- InitializingNewItemEventArgs.cs
- TemplateInstanceAttribute.cs
- FieldNameLookup.cs
- BasicBrowserDialog.cs
- InvalidProgramException.cs
- InstanceLockQueryResult.cs
- OleAutBinder.cs
- XmlParserContext.cs
- PaginationProgressEventArgs.cs
- _DigestClient.cs
- SchemaImporterExtension.cs
- GenerateDerivedKeyRequest.cs
- Help.cs
- WebRequestModulesSection.cs
- ControlEvent.cs
- AssemblyContextControlItem.cs
- CodeMethodReturnStatement.cs
- Hash.cs
- Drawing.cs
- PropertyMetadata.cs
- InitializationEventAttribute.cs
- AuthenticationSection.cs
- WindowsEditBoxRange.cs
- Model3DGroup.cs
- WorkflowInstanceProvider.cs
- ServerIdentity.cs
- SupportingTokenBindingElement.cs
- TypeDescriptionProviderAttribute.cs
- DbDataAdapter.cs
- IList.cs
- SessionIDManager.cs
- DecimalKeyFrameCollection.cs
- DesignerSerializationOptionsAttribute.cs
- OrderedHashRepartitionStream.cs
- PtsHost.cs
- X509Utils.cs
- nulltextcontainer.cs
- ReachFixedPageSerializerAsync.cs
- UiaCoreApi.cs
- FullTrustAssembly.cs
- XomlCompilerError.cs
- ListBox.cs
- DmlSqlGenerator.cs
- PixelShader.cs
- XmlCollation.cs
- ExpandoObject.cs
- PnrpPeerResolverElement.cs
- InternalRelationshipCollection.cs
- RunInstallerAttribute.cs
- PagesChangedEventArgs.cs
- TemplateComponentConnector.cs
- DataGridColumnsPage.cs
- WindowsTreeView.cs
- Utils.cs
- PenLineCapValidation.cs
- ArrayHelper.cs
- ColorPalette.cs
- PointIndependentAnimationStorage.cs
- GeneralEndpointIdentity.cs
- BookmarkManager.cs
- DataGridColumnHeaderItemAutomationPeer.cs
- PointLightBase.cs
- HttpModuleAction.cs
- _HeaderInfoTable.cs
- SQLDateTimeStorage.cs
- WebServiceMethodData.cs
- TextViewBase.cs
- GZipDecoder.cs
- StylusPlugin.cs
- Cursor.cs
- ProgressBarAutomationPeer.cs
- DecimalKeyFrameCollection.cs
- BindingExpression.cs
- ArraySet.cs
- DataControlFieldCollection.cs
- DataServiceException.cs
- BuildProvider.cs
- ControlCollection.cs
- ParseElement.cs
- METAHEADER.cs
- RuleInfoComparer.cs
- EqualityComparer.cs
- JsonFormatReaderGenerator.cs
- ComponentEditorPage.cs
- OperandQuery.cs