Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Channels / InputQueueChannel.cs / 1 / InputQueueChannel.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Channels { using System.Collections.Generic; abstract class InputQueueChannel: ChannelBase where TDisposable : class, IDisposable { InputQueue inputQueue; protected InputQueueChannel(ChannelManagerBase channelManager) : base(channelManager) { this.inputQueue = new InputQueue (); } public int InternalPendingItems { get { return this.inputQueue.PendingCount; } } public int PendingItems { get { ThrowIfDisposedOrNotOpen(); return InternalPendingItems; } } public void EnqueueAndDispatch(TDisposable item) { EnqueueAndDispatch(item, null); } public void EnqueueAndDispatch(TDisposable item, ItemDequeuedCallback dequeuedCallback, bool canDispatchOnThisThread) { OnEnqueueItem(item); // NOTE: don't need to check IsDisposed here: InputQueue will handle dispose inputQueue.EnqueueAndDispatch(item, dequeuedCallback, canDispatchOnThisThread); } public void EnqueueAndDispatch(Exception exception, ItemDequeuedCallback dequeuedCallback, bool canDispatchOnThisThread) { // NOTE: don't need to check IsDisposed here: InputQueue will handle dispose inputQueue.EnqueueAndDispatch(exception, dequeuedCallback, canDispatchOnThisThread); } public void EnqueueAndDispatch(TDisposable item, ItemDequeuedCallback dequeuedCallback) { OnEnqueueItem(item); // NOTE: don't need to check IsDisposed here: InputQueue will handle dispose inputQueue.EnqueueAndDispatch(item, dequeuedCallback); } public bool EnqueueWithoutDispatch(Exception exception, ItemDequeuedCallback dequeuedCallback) { // NOTE: don't need to check IsDisposed here: InputQueue will handle dispose return inputQueue.EnqueueWithoutDispatch(exception, dequeuedCallback); } public bool EnqueueWithoutDispatch(TDisposable item, ItemDequeuedCallback dequeuedCallback) { OnEnqueueItem(item); // NOTE: don't need to check IsDisposed here: InputQueue will handle dispose return inputQueue.EnqueueWithoutDispatch(item, dequeuedCallback); } public void Dispatch() { // NOTE: don't need to check IsDisposed here: InputQueue will handle dispose inputQueue.Dispatch(); } public void Shutdown() { inputQueue.Shutdown(); } protected override void OnFaulted() { base.OnFaulted(); inputQueue.Shutdown(this); } protected virtual void OnEnqueueItem(TDisposable item) { } protected IAsyncResult BeginDequeue(TimeSpan timeout, AsyncCallback callback, object state) { this.ThrowIfNotOpened(); return inputQueue.BeginDequeue(timeout, callback, state); } protected bool EndDequeue(IAsyncResult result, out TDisposable item) { bool dequeued = inputQueue.EndDequeue(result, out item); if (item == null) { this.ThrowIfFaulted(); this.ThrowIfAborted(); } return dequeued; } protected bool Dequeue(TimeSpan timeout, out TDisposable item) { this.ThrowIfNotOpened(); bool dequeued = inputQueue.Dequeue(timeout, out item); if (item == null) { this.ThrowIfFaulted(); this.ThrowIfAborted(); } return dequeued; } protected bool WaitForItem(TimeSpan timeout) { this.ThrowIfNotOpened(); bool dequeued = inputQueue.WaitForItem(timeout); this.ThrowIfFaulted(); this.ThrowIfAborted(); return dequeued; } protected IAsyncResult BeginWaitForItem(TimeSpan timeout, AsyncCallback callback, object state) { this.ThrowIfNotOpened(); return inputQueue.BeginWaitForItem(timeout, callback, state); } protected bool EndWaitForItem(IAsyncResult result) { bool dequeued = inputQueue.EndWaitForItem(result); this.ThrowIfFaulted(); this.ThrowIfAborted(); return dequeued; } protected override void OnClosing() { base.OnClosing(); inputQueue.Shutdown(this); } protected override void OnAbort() { inputQueue.Close(); } protected override void OnClose(TimeSpan timeout) { inputQueue.Close(); } protected override IAsyncResult OnBeginClose(TimeSpan timeout, AsyncCallback callback, object state) { inputQueue.Close(); return new CompletedAsyncResult(callback, state); } protected override void OnEndClose(IAsyncResult result) { CompletedAsyncResult.End(result); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- InheritanceAttribute.cs
- GetTokenRequest.cs
- HostingEnvironmentSection.cs
- ThrowHelper.cs
- EdgeModeValidation.cs
- ColorTransform.cs
- NotImplementedException.cs
- CodeVariableDeclarationStatement.cs
- XmlBaseWriter.cs
- ApplicationFileCodeDomTreeGenerator.cs
- BaseTypeViewSchema.cs
- EntityModelBuildProvider.cs
- ToolStripContentPanelRenderEventArgs.cs
- TextAutomationPeer.cs
- __Filters.cs
- PropertyToken.cs
- TrackBar.cs
- DataObjectMethodAttribute.cs
- NetPipeSectionData.cs
- StylusTouchDevice.cs
- SecurityImpersonationBehavior.cs
- StorageEndPropertyMapping.cs
- ValueUnavailableException.cs
- CqlLexerHelpers.cs
- Wizard.cs
- PersonalizablePropertyEntry.cs
- XPathDescendantIterator.cs
- KerberosTicketHashIdentifierClause.cs
- SafeBitVector32.cs
- ColorMatrix.cs
- ColorConverter.cs
- SevenBitStream.cs
- _LocalDataStoreMgr.cs
- StaticFileHandler.cs
- FastPropertyAccessor.cs
- LiteralSubsegment.cs
- TagNameToTypeMapper.cs
- ModifyActivitiesPropertyDescriptor.cs
- BooleanFunctions.cs
- GridViewColumnHeader.cs
- PathGeometry.cs
- StateMachineHelpers.cs
- HttpCookieCollection.cs
- ObjectItemCachedAssemblyLoader.cs
- UnicodeEncoding.cs
- WindowsGraphics.cs
- RtfToXamlLexer.cs
- ListManagerBindingsCollection.cs
- MimeFormImporter.cs
- ParallelTimeline.cs
- ListViewHitTestInfo.cs
- GroupAggregateExpr.cs
- HWStack.cs
- HashStream.cs
- VarRemapper.cs
- TemplateColumn.cs
- StorageEntityContainerMapping.cs
- FileSystemEnumerable.cs
- PartialArray.cs
- UrlPath.cs
- Latin1Encoding.cs
- ExecutedRoutedEventArgs.cs
- PassportAuthenticationModule.cs
- TreeNodeStyle.cs
- ConnectionStringsSection.cs
- RolePrincipal.cs
- GridSplitterAutomationPeer.cs
- Win32.cs
- ResourcePermissionBase.cs
- UnknownBitmapDecoder.cs
- KeyedHashAlgorithm.cs
- ExpressionVisitor.cs
- DiagnosticEventProvider.cs
- SubpageParaClient.cs
- DrawingImage.cs
- RegexMatchCollection.cs
- LayoutSettings.cs
- KnownAssembliesSet.cs
- BinaryReader.cs
- SingleQueryOperator.cs
- ToggleProviderWrapper.cs
- HandlerFactoryCache.cs
- RtfToXamlLexer.cs
- StatusStrip.cs
- ClientSession.cs
- CaseInsensitiveHashCodeProvider.cs
- SingleAnimation.cs
- PermissionSet.cs
- Helpers.cs
- LocalServiceSecuritySettingsElement.cs
- ImageAttributes.cs
- DSASignatureDeformatter.cs
- ExtendedProperty.cs
- ScriptManagerProxy.cs
- RequestQueue.cs
- Compiler.cs
- TableAdapterManagerNameHandler.cs
- MobileResource.cs
- HttpApplicationStateWrapper.cs
- WebBaseEventKeyComparer.cs