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
- SqlCommandSet.cs
- CriticalFinalizerObject.cs
- EmptyStringExpandableObjectConverter.cs
- Base64Decoder.cs
- ApplicationFileParser.cs
- ConfigXmlText.cs
- RegistrationServices.cs
- StorageBasedPackageProperties.cs
- DataGridAutoGeneratingColumnEventArgs.cs
- XPathPatternBuilder.cs
- Trustee.cs
- ProtocolsConfiguration.cs
- mediaeventargs.cs
- RegexCapture.cs
- SvcMapFileSerializer.cs
- Light.cs
- HitTestDrawingContextWalker.cs
- DesignTimeParseData.cs
- DesignerWebPartChrome.cs
- ShutDownListener.cs
- TrackBar.cs
- GridViewPageEventArgs.cs
- HttpCacheVaryByContentEncodings.cs
- FtpCachePolicyElement.cs
- ReferencedType.cs
- AffineTransform3D.cs
- ArgumentsParser.cs
- DbProviderFactory.cs
- Timer.cs
- SecurityKeyType.cs
- WindowsTreeView.cs
- OleDbPermission.cs
- WebBrowserContainer.cs
- TypeLoadException.cs
- UseAttributeSetsAction.cs
- TypeConverterHelper.cs
- newinstructionaction.cs
- AutomationPropertyInfo.cs
- ColumnHeaderCollectionEditor.cs
- DataBinding.cs
- AdornerPresentationContext.cs
- SiteMapNode.cs
- ListMarkerSourceInfo.cs
- WebSysDisplayNameAttribute.cs
- Color.cs
- TextInfo.cs
- DataGridViewCellEventArgs.cs
- GroupQuery.cs
- ForwardPositionQuery.cs
- DeliveryStrategy.cs
- DocumentAutomationPeer.cs
- KeyGestureConverter.cs
- TransformerInfo.cs
- DataGridViewCellConverter.cs
- RoutedPropertyChangedEventArgs.cs
- OdbcInfoMessageEvent.cs
- UndirectedGraph.cs
- XamlSerializerUtil.cs
- TrackingRecord.cs
- ISessionStateStore.cs
- XmlExceptionHelper.cs
- ApplicationServicesHostFactory.cs
- HostingMessageProperty.cs
- LayoutDump.cs
- DbSource.cs
- DbProviderFactoriesConfigurationHandler.cs
- StretchValidation.cs
- SmtpDateTime.cs
- Qualifier.cs
- Lease.cs
- InternalResources.cs
- ExpressionBuilderContext.cs
- TableCellAutomationPeer.cs
- ListCollectionView.cs
- DataSourceCollectionBase.cs
- Suspend.cs
- PixelFormats.cs
- VerificationException.cs
- GridItemPattern.cs
- SynchronizationLockException.cs
- URLIdentityPermission.cs
- PathFigureCollectionValueSerializer.cs
- RuntimeResourceSet.cs
- SqlFactory.cs
- ITreeGenerator.cs
- MyContact.cs
- ConfigurationLocation.cs
- WebPartTracker.cs
- DataGridCommandEventArgs.cs
- SecurityKeyEntropyMode.cs
- GridViewSortEventArgs.cs
- FileStream.cs
- FSWPathEditor.cs
- HandlerBase.cs
- Region.cs
- ResourcePool.cs
- GraphicsState.cs
- TextEditorCharacters.cs
- GridItem.cs
- PropertyChangedEventArgs.cs