void IFlooderForThrottle.OnThrottleReached() { if (DiagnosticUtility.ShouldTraceInformation) { string message = SR.GetString(SR.PeerThrottleWaiting, this.config.MeshId); PeerThrottleTraceRecord record = new PeerThrottleTraceRecord(this.config.MeshId, message); TraceUtility.TraceEvent(TraceEventType.Information, TraceCode.PeerFlooderReceiveMessageQuotaExceeded, SR.GetString(SR.TraceCodePeerFlooderReceiveMessageQuotaExceeded), record, this, null); } IPeerNeighbor peer = this.neighborManager.SlowestNeighbor(); if (peer == null) { return; } UtilityExtension extension = peer.Utility; if (peer.IsConnected && extension != null) { if (extension.PendingMessages > PeerTransportConstants.MessageThreshold) { extension.BeginCheckPoint(new UtilityExtension.PruneNeighborCallback(PruneNeighborCallback)); } else { Fx.Assert(false, "Neighbor is marked slow with messages " + extension.PendingMessages); } FireReachedEvent(); } }
void IFlooderForThrottle.OnThrottleReached() { if (System.ServiceModel.DiagnosticUtility.ShouldTraceInformation) { string message = System.ServiceModel.SR.GetString("PeerThrottleWaiting", new object[] { this.config.MeshId }); PeerThrottleTraceRecord extendedData = new PeerThrottleTraceRecord(this.config.MeshId, message); TraceUtility.TraceEvent(TraceEventType.Information, 0x4004f, System.ServiceModel.SR.GetString("TraceCodePeerFlooderReceiveMessageQuotaExceeded"), extendedData, this, null); } IPeerNeighbor neighbor = this.neighborManager.SlowestNeighbor(); if (neighbor != null) { UtilityExtension utility = neighbor.Utility; if (neighbor.IsConnected && (utility != null)) { if (utility.PendingMessages > 0x20) { utility.BeginCheckPoint(new System.ServiceModel.Channels.UtilityExtension.PruneNeighborCallback(this.PruneNeighborCallback)); } this.FireReachedEvent(); } } }