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
- PointLightBase.cs
- SecureUICommand.cs
- UpDownBase.cs
- LogExtentCollection.cs
- Assert.cs
- ListQueryResults.cs
- XmlSchemaCollection.cs
- RectKeyFrameCollection.cs
- MethodCallConverter.cs
- RightsManagementResourceHelper.cs
- StructuredType.cs
- SqlNode.cs
- TableLayoutPanelDesigner.cs
- UnsafeNativeMethods.cs
- EncodingTable.cs
- RectangleConverter.cs
- SystemTcpConnection.cs
- MobileListItemCollection.cs
- ResourceDescriptionAttribute.cs
- DispatcherExceptionEventArgs.cs
- DataGridViewCellPaintingEventArgs.cs
- Interlocked.cs
- ActionNotSupportedException.cs
- TemplateControlCodeDomTreeGenerator.cs
- AssemblyResourceLoader.cs
- HtmlTextBoxAdapter.cs
- TreeNodeSelectionProcessor.cs
- RichTextBoxContextMenu.cs
- FormsAuthenticationModule.cs
- LocatorManager.cs
- TokenBasedSet.cs
- ContextMarshalException.cs
- ScriptingProfileServiceSection.cs
- DateTimeUtil.cs
- GotoExpression.cs
- BinaryFormatterSinks.cs
- HighlightVisual.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- DebugViewWriter.cs
- LifetimeServices.cs
- ProfileGroupSettings.cs
- DbParameterCollectionHelper.cs
- Event.cs
- SafeRightsManagementSessionHandle.cs
- Accessible.cs
- HtmlInputHidden.cs
- AvTraceDetails.cs
- precedingquery.cs
- GlyphRunDrawing.cs
- XPathNavigator.cs
- BasicHttpMessageSecurityElement.cs
- Bookmark.cs
- COM2ComponentEditor.cs
- MetadataArtifactLoaderComposite.cs
- XPathException.cs
- _NestedSingleAsyncResult.cs
- WebBrowsableAttribute.cs
- AsyncPostBackTrigger.cs
- RecordsAffectedEventArgs.cs
- IncrementalHitTester.cs
- PaginationProgressEventArgs.cs
- webeventbuffer.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- EditorPartChrome.cs
- XmlSchemaExternal.cs
- EmbeddedMailObject.cs
- FlowDocumentScrollViewer.cs
- WriteFileContext.cs
- Repeater.cs
- MethodImplAttribute.cs
- DesignerWithHeader.cs
- FrameworkTemplate.cs
- RoutingTable.cs
- TableStyle.cs
- RawMouseInputReport.cs
- DateTimeOffset.cs
- SetMemberBinder.cs
- TreeViewItem.cs
- DateTime.cs
- DesignerTransaction.cs
- PropertyItemInternal.cs
- StringUtil.cs
- DesignerSerializationVisibilityAttribute.cs
- MetadataItemEmitter.cs
- LocalValueEnumerator.cs
- MultiBindingExpression.cs
- FontUnit.cs
- EntityDesignerBuildProvider.cs
- AuthenticationSection.cs
- _CookieModule.cs
- TableLayoutPanelCellPosition.cs
- ClusterRegistryConfigurationProvider.cs
- SvcMapFileLoader.cs
- ApplyImportsAction.cs
- HierarchicalDataTemplate.cs
- PersonalizationState.cs
- XmlSchemaSimpleTypeUnion.cs
- AutoResetEvent.cs
- DynamicRenderer.cs
- HashStream.cs