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
- Matrix3D.cs
- FtpWebResponse.cs
- NullReferenceException.cs
- CompilerGlobalScopeAttribute.cs
- ToolStripMenuItem.cs
- Range.cs
- Propagator.ExtentPlaceholderCreator.cs
- SqlRemoveConstantOrderBy.cs
- ToolStripSplitStackLayout.cs
- SessionEndedEventArgs.cs
- VisualStyleInformation.cs
- CreateWorkflowOwnerCommand.cs
- DispatcherTimer.cs
- HttpEncoderUtility.cs
- designeractionbehavior.cs
- CodeAttributeArgumentCollection.cs
- WebServiceMethodData.cs
- httpapplicationstate.cs
- Transform3DGroup.cs
- CodeSnippetStatement.cs
- CallTemplateAction.cs
- AggregatePushdown.cs
- XmlSchemaSimpleType.cs
- SqlWorkflowInstanceStoreLock.cs
- XmlAttributes.cs
- SimpleExpression.cs
- Compensate.cs
- RouteItem.cs
- BuildProvider.cs
- CultureInfoConverter.cs
- PauseStoryboard.cs
- FormsAuthenticationUser.cs
- DatatypeImplementation.cs
- BridgeDataReader.cs
- UserValidatedEventArgs.cs
- PaperSource.cs
- BamlResourceDeserializer.cs
- Triplet.cs
- EmissiveMaterial.cs
- IsolatedStorageFileStream.cs
- PatternMatcher.cs
- MsmqOutputChannel.cs
- ImageIndexConverter.cs
- FrameworkObject.cs
- ActivityTypeDesigner.xaml.cs
- AxHost.cs
- InitializerFacet.cs
- BackStopAuthenticationModule.cs
- StrokeSerializer.cs
- ShimAsPublicXamlType.cs
- mediaeventshelper.cs
- RadioButtonStandardAdapter.cs
- Group.cs
- Canvas.cs
- DbProviderFactory.cs
- ViewCellRelation.cs
- WithParamAction.cs
- CompiledQuery.cs
- OracleConnectionFactory.cs
- TextBoxBase.cs
- NativeMethods.cs
- Rotation3D.cs
- MemoryStream.cs
- IsolatedStorageFileStream.cs
- HttpRequestWrapper.cs
- PolyQuadraticBezierSegment.cs
- StylusButton.cs
- RecordBuilder.cs
- ServiceThrottlingElement.cs
- ServiceDiscoveryBehavior.cs
- HotSpotCollection.cs
- CodeVariableDeclarationStatement.cs
- ControlCachePolicy.cs
- VectorConverter.cs
- DataTableTypeConverter.cs
- DataGridTextBoxColumn.cs
- TriggerBase.cs
- SystemFonts.cs
- ValidationPropertyAttribute.cs
- TypedDataSetSchemaImporterExtension.cs
- DataGridViewCellStyleEditor.cs
- Exceptions.cs
- SecurityCapabilities.cs
- HttpRequestCacheValidator.cs
- Vector.cs
- ActivityWithResultWrapper.cs
- FixedSOMFixedBlock.cs
- ScrollBarRenderer.cs
- handlecollector.cs
- NotFiniteNumberException.cs
- SmtpDigestAuthenticationModule.cs
- EdmToObjectNamespaceMap.cs
- HtmlLinkAdapter.cs
- ExpressionBinding.cs
- HeaderedContentControl.cs
- PageWrapper.cs
- AppSettingsExpressionBuilder.cs
- PopupRootAutomationPeer.cs
- PersonalizationStateQuery.cs
- WebContext.cs