Candidate GetSingleMatch(CandidateSet cset, Message message) { int candiCount = cset.candidates.Count; if (cset.qnames.Count == 0) { if (candiCount == 0) { return(null); } else if (candiCount == 1) { return(cset.candidates[0]); } else { Collection <MessageFilter> matches = new Collection <MessageFilter>(); for (int i = 0; i < candiCount; ++i) { matches.Add(cset.candidates[i].filter); } throw TraceUtility.ThrowHelperError(new MultipleFilterMatchesException(SR.GetString(SR.FilterMultipleMatches), null, matches), message); } } EndpointAddressProcessor context = CreateProcessor(this.size); context.ProcessHeaders(message, cset.qnames, this.headerLookup); Candidate can = null; List <Candidate> candis = cset.candidates; for (int i = 0; i < candiCount; ++i) { if (context.TestMask(candis[i].mask)) { if (can != null) { Collection <MessageFilter> matches = new Collection <MessageFilter>(); matches.Add(can.filter); matches.Add(candis[i].filter); throw TraceUtility.ThrowHelperError(new MultipleFilterMatchesException(SR.GetString(SR.FilterMultipleMatches), null, matches), message); } can = candis[i]; } } ReleaseProcessor(context); return(can); }
internal bool Match(Message message) { if (this.size == 0) { return(true); } EndpointAddressProcessor context = this.CreateProcessor(this.size); context.ProcessHeaders(message, this.qnameLookup, this.headerLookup); bool flag = context.TestExact(this.mask); this.ReleaseProcessor(context); return(flag); }
private void InnerMatchFilters(Message message, ICollection <MessageFilter> results, CandidateSet <TFilterData> cset) { EndpointAddressProcessor processor = this.CreateProcessor(this.size); processor.ProcessHeaders(message, cset.qnames, this.headerLookup); List <Candidate <TFilterData> > candidates = cset.candidates; for (int i = 0; i < candidates.Count; i++) { if (processor.TestMask(candidates[i].mask)) { results.Add(candidates[i].filter); } } this.ReleaseProcessor(processor); }
private Candidate <TFilterData> GetSingleMatch(CandidateSet <TFilterData> cset, Message message) { int count = cset.candidates.Count; if (cset.qnames.Count == 0) { switch (count) { case 0: return(null); case 1: return(cset.candidates[0]); } Collection <MessageFilter> filters = new Collection <MessageFilter>(); for (int j = 0; j < count; j++) { filters.Add(cset.candidates[j].filter); } throw TraceUtility.ThrowHelperError(new MultipleFilterMatchesException(System.ServiceModel.SR.GetString("FilterMultipleMatches"), null, filters), message); } EndpointAddressProcessor processor = this.CreateProcessor(this.size); processor.ProcessHeaders(message, cset.qnames, this.headerLookup); Candidate <TFilterData> candidate = null; List <Candidate <TFilterData> > candidates = cset.candidates; for (int i = 0; i < count; i++) { if (processor.TestMask(candidates[i].mask)) { if (candidate != null) { Collection <MessageFilter> collection2 = new Collection <MessageFilter> { candidate.filter, candidates[i].filter }; throw TraceUtility.ThrowHelperError(new MultipleFilterMatchesException(System.ServiceModel.SR.GetString("FilterMultipleMatches"), null, collection2), message); } candidate = candidates[i]; } } this.ReleaseProcessor(processor); return(candidate); }
void InnerMatchFilters(Message message, ICollection <MessageFilter> results, CandidateSet cset) { EndpointAddressProcessor context = CreateProcessor(this.size); context.ProcessHeaders(message, cset.qnames, this.headerLookup); List <Candidate> candis = cset.candidates; for (int i = 0; i < candis.Count; ++i) { if (context.TestMask(candis[i].mask)) { results.Add(candis[i].filter); } } ReleaseProcessor(context); }