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
- DetailsViewInsertedEventArgs.cs
- SetStoryboardSpeedRatio.cs
- BaseProcessor.cs
- CodeAccessPermission.cs
- PixelFormats.cs
- UpdateEventArgs.cs
- HtmlProps.cs
- SystemWebCachingSectionGroup.cs
- RouteValueExpressionBuilder.cs
- CharConverter.cs
- ValidationErrorCollection.cs
- SimpleHandlerBuildProvider.cs
- GuidConverter.cs
- GetWinFXPath.cs
- FileDetails.cs
- Trigger.cs
- UnsafeNativeMethods.cs
- ConcurrentStack.cs
- Behavior.cs
- RootNamespaceAttribute.cs
- XpsPackagingPolicy.cs
- LoginName.cs
- MsmqMessageProperty.cs
- Polyline.cs
- TextBoxAutoCompleteSourceConverter.cs
- BitmapMetadataBlob.cs
- SyntaxCheck.cs
- PreviewKeyDownEventArgs.cs
- Vector3DKeyFrameCollection.cs
- SyndicationSerializer.cs
- BrowserInteropHelper.cs
- ResXBuildProvider.cs
- SchemaContext.cs
- InvokeBase.cs
- PointAnimationUsingKeyFrames.cs
- DataSvcMapFileSerializer.cs
- SmiTypedGetterSetter.cs
- LinkTarget.cs
- SByteConverter.cs
- ObjectItemCollectionAssemblyCacheEntry.cs
- ZipIOBlockManager.cs
- TextMetrics.cs
- WsdlWriter.cs
- FilterEventArgs.cs
- TextElementCollectionHelper.cs
- OleAutBinder.cs
- DocumentReference.cs
- SqlDataSourceCommandEventArgs.cs
- ExternalFile.cs
- ReadOnlyDictionary.cs
- CollectionBuilder.cs
- PtsHelper.cs
- CodeDirectiveCollection.cs
- DataControlReference.cs
- XmlnsDefinitionAttribute.cs
- SQLInt64.cs
- TextSelectionProcessor.cs
- MouseEvent.cs
- GenericTypeParameterConverter.cs
- TransformGroup.cs
- TextElement.cs
- InlineCollection.cs
- ToolStripDropDownMenu.cs
- ItemType.cs
- SystemWebCachingSectionGroup.cs
- HwndHost.cs
- StringToken.cs
- FigureParagraph.cs
- ContextBase.cs
- DataGridViewDataErrorEventArgs.cs
- SystemInformation.cs
- base64Transforms.cs
- MultipartContentParser.cs
- RelationshipNavigation.cs
- DocumentViewer.cs
- FormClosingEvent.cs
- SapiInterop.cs
- ElementProxy.cs
- EntityDataSourceEntityTypeFilterItem.cs
- BackoffTimeoutHelper.cs
- ToolStripComboBox.cs
- SQLInt16Storage.cs
- HealthMonitoringSection.cs
- TreeViewCancelEvent.cs
- DispatcherExceptionFilterEventArgs.cs
- ReservationNotFoundException.cs
- DesignerDataTableBase.cs
- DatePickerAutomationPeer.cs
- DataBinding.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- BitFlagsGenerator.cs
- SubstitutionList.cs
- InheritanceRules.cs
- XmlBinaryWriter.cs
- SqlCommandSet.cs
- DataFormats.cs
- ActiveXHost.cs
- HtmlControl.cs
- PropertyDescriptorComparer.cs
- EventWaitHandleSecurity.cs