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
- RootBrowserWindowProxy.cs
- HandleRef.cs
- ProtectedConfigurationProviderCollection.cs
- DependencyPropertyValueSerializer.cs
- SmtpException.cs
- Transform3DGroup.cs
- ParagraphVisual.cs
- WebRequestModuleElementCollection.cs
- DeferrableContent.cs
- ConfigurationStrings.cs
- IPipelineRuntime.cs
- Int32CollectionValueSerializer.cs
- LogicalTreeHelper.cs
- InstanceData.cs
- PasswordPropertyTextAttribute.cs
- SmtpClient.cs
- SqlCommandBuilder.cs
- InstanceLockTracking.cs
- SqlTrackingService.cs
- DataSourceControl.cs
- ControlUtil.cs
- Button.cs
- IIS7UserPrincipal.cs
- RowSpanVector.cs
- EntityDataSourceValidationException.cs
- TableLayoutPanelCellPosition.cs
- Registry.cs
- _BufferOffsetSize.cs
- RuntimeConfigLKG.cs
- MobileControlPersister.cs
- SqlTransaction.cs
- CollectionViewGroup.cs
- ServiceContractAttribute.cs
- PageClientProxyGenerator.cs
- UpdatePanelControlTrigger.cs
- IxmlLineInfo.cs
- ServiceContractViewControl.cs
- DbReferenceCollection.cs
- RowParagraph.cs
- MessageDecoder.cs
- LinearKeyFrames.cs
- RelationshipDetailsRow.cs
- ObjectViewFactory.cs
- BindingSource.cs
- Rect.cs
- ValueProviderWrapper.cs
- LicFileLicenseProvider.cs
- ManipulationPivot.cs
- TypeConverterHelper.cs
- ColorTransformHelper.cs
- InstallerTypeAttribute.cs
- OleDbConnectionFactory.cs
- CounterCreationDataCollection.cs
- WebPartZoneBase.cs
- XmlDocumentType.cs
- XhtmlConformanceSection.cs
- RegexGroup.cs
- ExpandedWrapper.cs
- UniqueEventHelper.cs
- CommentEmitter.cs
- SortQuery.cs
- ConfigXmlSignificantWhitespace.cs
- PathStreamGeometryContext.cs
- DateTimeOffsetStorage.cs
- ToolStripControlHost.cs
- EpmSyndicationContentSerializer.cs
- BaseTemplateCodeDomTreeGenerator.cs
- EmptyReadOnlyDictionaryInternal.cs
- BitVector32.cs
- HuffCodec.cs
- PolyQuadraticBezierSegment.cs
- AutoGeneratedField.cs
- UnsafeNetInfoNativeMethods.cs
- CompiledELinqQueryState.cs
- ControlCachePolicy.cs
- SqlFlattener.cs
- DataObjectMethodAttribute.cs
- DataPagerField.cs
- ConstraintCollection.cs
- Console.cs
- ReflectionHelper.cs
- AppDomainFactory.cs
- graph.cs
- SQLBytesStorage.cs
- GridViewPageEventArgs.cs
- UriTemplateEquivalenceComparer.cs
- SafeEventLogReadHandle.cs
- Grid.cs
- CornerRadius.cs
- ServiceModelConfigurationSectionCollection.cs
- UnknownBitmapEncoder.cs
- MultiBinding.cs
- DbCommandDefinition.cs
- SmiContext.cs
- LOSFormatter.cs
- TableLayoutSettings.cs
- SegmentInfo.cs
- MsmqUri.cs
- ConfigXmlElement.cs
- RoleManagerSection.cs