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
- StrokeNodeOperations.cs
- HtmlTableRow.cs
- DataGridViewButtonCell.cs
- SrgsRulesCollection.cs
- ByteConverter.cs
- XPathException.cs
- FormViewDeletedEventArgs.cs
- Fonts.cs
- AnyReturnReader.cs
- Attributes.cs
- Preprocessor.cs
- ThreadExceptionDialog.cs
- DynamicControl.cs
- DataGridColumnEventArgs.cs
- GridViewAutomationPeer.cs
- SqlWebEventProvider.cs
- ControlParser.cs
- Thread.cs
- AppPool.cs
- SharedPerformanceCounter.cs
- MemberNameValidator.cs
- ComboBoxRenderer.cs
- InsufficientMemoryException.cs
- KeySplineConverter.cs
- DocumentPageHost.cs
- DictionaryContent.cs
- SamlAttributeStatement.cs
- FileSecurity.cs
- EdmComplexTypeAttribute.cs
- TextTreePropertyUndoUnit.cs
- MessageDispatch.cs
- ProcessThread.cs
- ActivationService.cs
- JoinTreeSlot.cs
- DefinitionUpdate.cs
- JapaneseLunisolarCalendar.cs
- SecUtil.cs
- EdmItemCollection.cs
- SQLCharsStorage.cs
- SerializationStore.cs
- GridViewUpdateEventArgs.cs
- MgmtConfigurationRecord.cs
- TileBrush.cs
- MeshGeometry3D.cs
- GridViewItemAutomationPeer.cs
- Oci.cs
- RegexFCD.cs
- Image.cs
- SerializationEventsCache.cs
- shaperfactoryquerycachekey.cs
- DBConnection.cs
- CodeDelegateCreateExpression.cs
- EntitySetDataBindingList.cs
- Size3DValueSerializer.cs
- RegexCaptureCollection.cs
- XpsFilter.cs
- SerializationFieldInfo.cs
- DataGridTextBox.cs
- PersonalizationStateQuery.cs
- ItemCheckedEvent.cs
- SatelliteContractVersionAttribute.cs
- MultiDataTrigger.cs
- PersonalizationStateInfoCollection.cs
- TextElementCollectionHelper.cs
- PeerHopCountAttribute.cs
- WebPartDisplayModeCollection.cs
- Win32Exception.cs
- ErrorLog.cs
- SqlDataSourceRefreshSchemaForm.cs
- DispatcherHookEventArgs.cs
- EventlogProvider.cs
- DynamicRendererThreadManager.cs
- WebBaseEventKeyComparer.cs
- SubMenuStyleCollection.cs
- InplaceBitmapMetadataWriter.cs
- DateTimeStorage.cs
- ScriptMethodAttribute.cs
- QuerySelectOp.cs
- TriggerActionCollection.cs
- dbdatarecord.cs
- Nullable.cs
- QilFunction.cs
- nulltextcontainer.cs
- ContentFilePart.cs
- ScrollChrome.cs
- Source.cs
- BCryptSafeHandles.cs
- BaseCodePageEncoding.cs
- PathParser.cs
- ResourceAssociationSetEnd.cs
- CngUIPolicy.cs
- VirtualizedContainerService.cs
- X509ThumbprintKeyIdentifierClause.cs
- StorageMappingItemLoader.cs
- ControlIdConverter.cs
- ResourceExpressionBuilder.cs
- HtmlTableRow.cs
- ElementAction.cs
- QueryOperationResponseOfT.cs
- ConfigDefinitionUpdates.cs