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
- BinaryFormatterWriter.cs
- SystemIPAddressInformation.cs
- Tracer.cs
- StatusBar.cs
- WasAdminWrapper.cs
- XmlDataSourceNodeDescriptor.cs
- BitmapEffectInputData.cs
- WindowsSspiNegotiation.cs
- QueryFunctions.cs
- ITreeGenerator.cs
- MediaSystem.cs
- XmlSchemaValidator.cs
- ComboBoxRenderer.cs
- ComponentResourceKey.cs
- DrawToolTipEventArgs.cs
- DataControlHelper.cs
- WebZone.cs
- HandledMouseEvent.cs
- PageBuildProvider.cs
- PolicyManager.cs
- BasePattern.cs
- XamlSerializerUtil.cs
- WebPartManagerInternals.cs
- XmlSchemaSimpleContentExtension.cs
- Properties.cs
- ConstraintCollection.cs
- HttpAsyncResult.cs
- ChannelEndpointElementCollection.cs
- DocumentApplicationJournalEntry.cs
- QilUnary.cs
- SqlEnums.cs
- TableCell.cs
- CfgSemanticTag.cs
- OdbcConnectionHandle.cs
- Assert.cs
- XmlLanguage.cs
- ProcessInputEventArgs.cs
- DebugController.cs
- SystemNetworkInterface.cs
- BindingFormattingDialog.cs
- XpsPackagingPolicy.cs
- ReadOnlyObservableCollection.cs
- ArithmeticException.cs
- PowerStatus.cs
- MethodCallConverter.cs
- Automation.cs
- EntityViewGenerator.cs
- ReaderWriterLock.cs
- ProtocolElementCollection.cs
- InvokeSchedule.cs
- PrintPageEvent.cs
- StringToken.cs
- ZipFileInfo.cs
- XamlPoint3DCollectionSerializer.cs
- ImageFormatConverter.cs
- UserNameSecurityTokenProvider.cs
- TypeResolver.cs
- PreviewPrintController.cs
- ExecutedRoutedEventArgs.cs
- login.cs
- DocumentViewer.cs
- SendMailErrorEventArgs.cs
- Frame.cs
- DataFieldEditor.cs
- XmlStreamNodeWriter.cs
- EntityContainerEmitter.cs
- EtwTrace.cs
- Opcode.cs
- EngineSiteSapi.cs
- TraceContextEventArgs.cs
- StrongName.cs
- QilPatternVisitor.cs
- ApplicationCommands.cs
- MatcherBuilder.cs
- CodeObject.cs
- ModelPropertyDescriptor.cs
- MatrixCamera.cs
- HashHelper.cs
- SystemInfo.cs
- Delegate.cs
- WebPartTransformer.cs
- StackSpiller.Temps.cs
- SecureUICommand.cs
- JournalEntryListConverter.cs
- StreamGeometry.cs
- ChtmlTextWriter.cs
- DependencyPropertyConverter.cs
- control.ime.cs
- BindableTemplateBuilder.cs
- TypefaceMetricsCache.cs
- TiffBitmapDecoder.cs
- CodeDelegateInvokeExpression.cs
- ConfigurationSectionGroup.cs
- EventNotify.cs
- itemelement.cs
- ResourcePool.cs
- Subordinate.cs
- BuildProvidersCompiler.cs
- SevenBitStream.cs
- TypefaceCollection.cs