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
- ThreadExceptionEvent.cs
- Assembly.cs
- DiagnosticsConfiguration.cs
- MarkupExtensionReturnTypeAttribute.cs
- ToggleProviderWrapper.cs
- SignatureHelper.cs
- XPathNodePointer.cs
- CodeConstructor.cs
- CaseInsensitiveOrdinalStringComparer.cs
- ScriptResourceHandler.cs
- ClrPerspective.cs
- TreeNodeStyleCollection.cs
- Roles.cs
- DataGridColumnStyleMappingNameEditor.cs
- SafeProcessHandle.cs
- Listen.cs
- HitTestDrawingContextWalker.cs
- DesignerLabelAdapter.cs
- ToolStripPanel.cs
- login.cs
- ProcessHostMapPath.cs
- EntityKey.cs
- AnnotationResourceChangedEventArgs.cs
- ExpressionValueEditor.cs
- QilValidationVisitor.cs
- InputLanguageSource.cs
- JulianCalendar.cs
- Exceptions.cs
- TargetParameterCountException.cs
- HandledEventArgs.cs
- PeerResolverBindingElement.cs
- XpsLiterals.cs
- TransactionChannelFaultConverter.cs
- PeerNameResolver.cs
- UriScheme.cs
- XmlQuerySequence.cs
- CompilerInfo.cs
- AutomationProperty.cs
- COM2FontConverter.cs
- SrgsRuleRef.cs
- ExpressionConverter.cs
- Vars.cs
- Brush.cs
- ExceptionHandlersDesigner.cs
- SplineKeyFrames.cs
- PrinterUnitConvert.cs
- OdbcDataReader.cs
- DataGridViewColumnStateChangedEventArgs.cs
- ConfigXmlReader.cs
- PermissionSet.cs
- BindingGraph.cs
- TypeValidationEventArgs.cs
- ChtmlCalendarAdapter.cs
- DiscoveryDocument.cs
- HtmlImageAdapter.cs
- EventPropertyMap.cs
- GeneralTransformGroup.cs
- ImageAutomationPeer.cs
- ConnectionPointCookie.cs
- HttpContext.cs
- CodeAttributeArgument.cs
- xamlnodes.cs
- MetaDataInfo.cs
- SqlClientFactory.cs
- DbProviderManifest.cs
- PrefixHandle.cs
- TreeNode.cs
- DataServiceClientException.cs
- AuthenticationConfig.cs
- UnionCodeGroup.cs
- EventRoute.cs
- WindowsScroll.cs
- ByteRangeDownloader.cs
- SpellerStatusTable.cs
- Stylus.cs
- XmlBaseWriter.cs
- Int64Converter.cs
- DataTable.cs
- TitleStyle.cs
- SourceChangedEventArgs.cs
- SqlServer2KCompatibilityCheck.cs
- WindowsUpDown.cs
- NullableFloatSumAggregationOperator.cs
- ViewManager.cs
- NetworkAddressChange.cs
- EntityTypeEmitter.cs
- SafeHandle.cs
- GeneralTransform2DTo3DTo2D.cs
- Composition.cs
- SecurityRuntime.cs
- DrawingVisual.cs
- Handle.cs
- XmlSignificantWhitespace.cs
- ListViewItemMouseHoverEvent.cs
- Convert.cs
- TextDecorationCollection.cs
- HttpStaticObjectsCollectionBase.cs
- OperationPickerDialog.designer.cs
- TabRenderer.cs
- NavigationWindowAutomationPeer.cs