private FaultPropagationQuery Match(FaultPropagationRecord faultRecord)
        {
            FaultPropagationQuery query = null;

            if (this.faultPropagationSubscriptions != null)
            {
                for (int i = 0; i < this.faultPropagationSubscriptions.Count; i++)
                {
                    string str = (faultRecord.FaultHandler == null) ? null : faultRecord.FaultHandler.Name;
                    if (string.CompareOrdinal(this.faultPropagationSubscriptions[i].FaultSourceActivityName, faultRecord.FaultSource.Name) == 0)
                    {
                        if (!CheckSubscription(this.faultPropagationSubscriptions[i].FaultHandlerActivityName, str))
                        {
                            continue;
                        }
                        query = this.faultPropagationSubscriptions[i];
                        break;
                    }
                    if ((string.CompareOrdinal(this.faultPropagationSubscriptions[i].FaultSourceActivityName, "*") == 0) && CheckSubscription(this.faultPropagationSubscriptions[i].FaultHandlerActivityName, str))
                    {
                        query = this.faultPropagationSubscriptions[i];
                        break;
                    }
                }
            }
            if (((query == null) || (this.associatedProfile.ImplementationVisibility != ImplementationVisibility.RootScope)) || (this.ShouldTrackActivity(faultRecord.FaultHandler, query.FaultHandlerActivityName) && this.ShouldTrackActivity(faultRecord.FaultSource, query.FaultSourceActivityName)))
            {
                return(query);
            }
            return(null);
        }
예제 #2
0
 private void AddFaultPropagationSubscription(FaultPropagationQuery faultQuery)
 {
     this.trackingRecordPreFilter.TrackFaultPropagationRecords = true;
     if (this.faultPropagationSubscriptions == null)
     {
         this.faultPropagationSubscriptions = new List <FaultPropagationQuery>();
     }
     this.faultPropagationSubscriptions.Add(faultQuery);
 }
        protected override TrackingQuery NewTrackingQuery()
        {
            FaultPropagationQuery query = new FaultPropagationQuery
                {
                    FaultSourceActivityName = this.FaultSourceActivityName,
                    FaultHandlerActivityName = this.FaultHandlerActivityName
                };

            return query;
        }
예제 #4
0
        private FaultPropagationQuery Match(FaultPropagationRecord faultRecord)
        {
            FaultPropagationQuery query = null;

            if (this.faultPropagationSubscriptions != null)
            {
                for (var i = 0; i < this.faultPropagationSubscriptions.Count; i++)
                {
                    //check specific and then generic
                    var faultHandlerName = faultRecord.FaultHandler == null ? null : faultRecord.FaultHandler.Name;
                    if (string.CompareOrdinal(this.faultPropagationSubscriptions[i].FaultSourceActivityName, faultRecord.FaultSource.Name) == 0)
                    {
                        if (CheckSubscription(this.faultPropagationSubscriptions[i].FaultHandlerActivityName, faultHandlerName))
                        {
                            query = this.faultPropagationSubscriptions[i];
                            break;
                        }
                    }
                    else if (string.CompareOrdinal(this.faultPropagationSubscriptions[i].FaultSourceActivityName, "*") == 0)
                    {
                        if (CheckSubscription(this.faultPropagationSubscriptions[i].FaultHandlerActivityName, faultHandlerName))
                        {
                            query = this.faultPropagationSubscriptions[i];
                            break;
                        }
                    }
                }
            }

            if ((query != null) && (this.associatedProfile.ImplementationVisibility == ImplementationVisibility.RootScope))
            {
                if ((!ShouldTrackActivity(faultRecord.FaultHandler, query.FaultHandlerActivityName)) ||
                    (!ShouldTrackActivity(faultRecord.FaultSource, query.FaultSourceActivityName)))
                {
                    return(null);
                }
            }

            return(query);
        }
 private void AddFaultPropagationSubscription(FaultPropagationQuery faultQuery)
 {
     this.trackingRecordPreFilter.TrackFaultPropagationRecords = true;
     if (this.faultPropagationSubscriptions == null)
     {
         this.faultPropagationSubscriptions = new List<FaultPropagationQuery>();
     }
     this.faultPropagationSubscriptions.Add(faultQuery);
 }