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
- TraceData.cs
- EarlyBoundInfo.cs
- PropertyRecord.cs
- CodeDomConfigurationHandler.cs
- DataBindingCollectionEditor.cs
- Accessible.cs
- MergeFilterQuery.cs
- DtrList.cs
- WebPartHeaderCloseVerb.cs
- RegexGroupCollection.cs
- ToolStripTextBox.cs
- Number.cs
- AlgoModule.cs
- Label.cs
- VisualStyleElement.cs
- ModelUIElement3D.cs
- DataGridViewBindingCompleteEventArgs.cs
- SqlMethodAttribute.cs
- InlinedAggregationOperator.cs
- LocalizableAttribute.cs
- ListViewItem.cs
- ZipIOLocalFileHeader.cs
- ConfigurationStrings.cs
- ListDictionaryInternal.cs
- EncodingTable.cs
- SpStreamWrapper.cs
- XPathNodePointer.cs
- ColumnClickEvent.cs
- KeyBinding.cs
- CommonObjectSecurity.cs
- ProviderUtil.cs
- SessionIDManager.cs
- DynamicMetaObject.cs
- _NestedMultipleAsyncResult.cs
- BitmapEffectGeneralTransform.cs
- DesignerTextBoxAdapter.cs
- OdbcException.cs
- embossbitmapeffect.cs
- ToolStripItemEventArgs.cs
- SqlWebEventProvider.cs
- shaper.cs
- SelectionRange.cs
- WebPartCollection.cs
- SqlCommand.cs
- SmtpNegotiateAuthenticationModule.cs
- NamedObjectList.cs
- LZCodec.cs
- WebConvert.cs
- FlowchartDesigner.xaml.cs
- ConfigurationManagerInternalFactory.cs
- BrowserInteropHelper.cs
- ContextMenuAutomationPeer.cs
- CreateUserErrorEventArgs.cs
- ExpressionConverter.cs
- Comparer.cs
- Transform3DGroup.cs
- DefaultHttpHandler.cs
- BitmapVisualManager.cs
- Msmq4PoisonHandler.cs
- HostVisual.cs
- _RequestCacheProtocol.cs
- AnnotationObservableCollection.cs
- SyntaxCheck.cs
- LinkClickEvent.cs
- TypeElement.cs
- ACE.cs
- WsdlBuildProvider.cs
- RoleGroup.cs
- InternalTypeHelper.cs
- FormViewRow.cs
- CharConverter.cs
- FontCacheLogic.cs
- SqlConnectionString.cs
- ImageCodecInfo.cs
- SeverityFilter.cs
- FolderBrowserDialog.cs
- RectConverter.cs
- ASCIIEncoding.cs
- COM2PropertyDescriptor.cs
- TextEffectCollection.cs
- IgnorePropertiesAttribute.cs
- MultipartIdentifier.cs
- FreezableOperations.cs
- MouseGesture.cs
- ConditionBrowserDialog.cs
- StateItem.cs
- QueryGeneratorBase.cs
- followingsibling.cs
- ExpressionReplacer.cs
- VariantWrapper.cs
- BamlWriter.cs
- PersonalizablePropertyEntry.cs
- BaseHashHelper.cs
- WpfWebRequestHelper.cs
- Select.cs
- DataBoundControl.cs
- StrokeIntersection.cs
- CodeAttributeArgumentCollection.cs
- HttpModule.cs
- MultipleViewProviderWrapper.cs