Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Channels / Msmq3PoisonHandler.cs / 1 / Msmq3PoisonHandler.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Channels { using System.Collections.Generic; sealed class Msmq3PoisonHandler: IPoisonHandlingStrategy { const int maxTrackedMessages = 256; MsmqReceiveHelper receiver; SortedListtrackedMessages; object thisLock = new object(); internal Msmq3PoisonHandler(MsmqReceiveHelper receiver) { this.receiver = receiver; this.trackedMessages = new SortedList (maxTrackedMessages); } public bool CheckAndHandlePoisonMessage(MsmqMessageProperty messageProperty) { long lookupId = messageProperty.LookupId; int seen; lock (thisLock) { seen = this.UpdateSeenCount(lookupId); if (seen > (receiver.MsmqReceiveParameters.ReceiveRetryCount + 1) && receiver.MsmqReceiveParameters.ReceiveRetryCount != Int32.MaxValue) { FinalDisposition(messageProperty); this.trackedMessages.Remove(lookupId); return true; } } messageProperty.AbortCount = seen - 1; return false; } public void FinalDisposition(MsmqMessageProperty messageProperty) { switch (receiver.MsmqReceiveParameters.ReceiveErrorHandling) { case ReceiveErrorHandling.Drop: this.receiver.DropOrRejectReceivedMessage(messageProperty, false); break; case ReceiveErrorHandling.Fault: MsmqReceiveHelper.TryAbortTransactionCurrent(); if (null != this.receiver.ChannelListener) this.receiver.ChannelListener.FaultListener(); if (null != this.receiver.Channel) this.receiver.Channel.FaultChannel(); break; default: DiagnosticUtility.DebugAssert("System.ServiceModel.Channels.Msmq3PoisonHandler.FinalDisposition(): (unexpected ReceiveErrorHandling)"); break; } } int UpdateSeenCount(long lookupId) { int value; if (this.trackedMessages.TryGetValue(lookupId, out value)) { ++ value; this.trackedMessages[lookupId] = value; return value; } else { if (maxTrackedMessages == this.trackedMessages.Count) { this.trackedMessages.RemoveAt(0); } this.trackedMessages.Add(lookupId, 1); return 1; } } public void Open() {} public void Dispose() {} } } // 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
- ContextMenu.cs
- XmlEntityReference.cs
- SqlUtil.cs
- Brushes.cs
- DataGridHeaderBorder.cs
- SafeBitVector32.cs
- LookupNode.cs
- IsolatedStorageFile.cs
- StringResourceManager.cs
- DummyDataSource.cs
- StrokeNodeData.cs
- ValidationError.cs
- NameNode.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- PerfCounterSection.cs
- WebPartHelpVerb.cs
- IssuedTokenServiceCredential.cs
- EventLogEntry.cs
- ResourceIDHelper.cs
- QilName.cs
- AccessText.cs
- StateDesigner.Helpers.cs
- BezierSegment.cs
- ExpressionWriter.cs
- SchemaHelper.cs
- RestHandlerFactory.cs
- ValidatedControlConverter.cs
- MissingSatelliteAssemblyException.cs
- AddInActivator.cs
- ColorMap.cs
- CommandTreeTypeHelper.cs
- SqlTopReducer.cs
- FlowchartSizeFeature.cs
- DictionaryEditChange.cs
- DocumentViewerHelper.cs
- StrongName.cs
- isolationinterop.cs
- PagedDataSource.cs
- EdmToObjectNamespaceMap.cs
- DataTablePropertyDescriptor.cs
- BaseCodePageEncoding.cs
- IIS7UserPrincipal.cs
- CustomError.cs
- CustomAttributeFormatException.cs
- OutputCacheSection.cs
- NativeWindow.cs
- BooleanAnimationUsingKeyFrames.cs
- SafeEventLogWriteHandle.cs
- ErrorTableItemStyle.cs
- ObjectListSelectEventArgs.cs
- SQLByteStorage.cs
- DBConnectionString.cs
- PathHelper.cs
- PropertyBuilder.cs
- PropertyDescriptorComparer.cs
- DefaultValidator.cs
- SingleKeyFrameCollection.cs
- HttpResponse.cs
- MenuAdapter.cs
- regiisutil.cs
- SymbolPair.cs
- RefreshPropertiesAttribute.cs
- DataGridViewElement.cs
- JsonCollectionDataContract.cs
- ErrorHandler.cs
- NamespaceEmitter.cs
- HtmlContainerControl.cs
- DesignerHelpers.cs
- HtmlTableRowCollection.cs
- WebBaseEventKeyComparer.cs
- PTConverter.cs
- SmiTypedGetterSetter.cs
- Timer.cs
- FigureParaClient.cs
- RoleServiceManager.cs
- PointLightBase.cs
- SecureUICommand.cs
- DataGridViewLinkColumn.cs
- DrawingAttributeSerializer.cs
- InstancePersistenceCommandException.cs
- ActiveXSite.cs
- DataGridViewElement.cs
- EncoderBestFitFallback.cs
- SimpleType.cs
- Module.cs
- AdornerHitTestResult.cs
- FormsAuthenticationEventArgs.cs
- WebPartChrome.cs
- CaseExpr.cs
- SQLMoney.cs
- WorkflowMarkupElementEventArgs.cs
- StringComparer.cs
- EntityCommandDefinition.cs
- ResourceAssociationSet.cs
- CodeAttributeArgumentCollection.cs
- ColumnPropertiesGroup.cs
- TrackingProfileCache.cs
- PriorityBinding.cs
- ThrowHelper.cs
- StrokeCollectionConverter.cs