public void Add(PrefixEndpointAddressMessageFilter filter, TFilterData data) { if (filter == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("filter"); } filters.Add(filter, data); // Create the candidate byte[] mask = BuildMask(filter.HeaderLookup); Candidate can = new Candidate(filter, data, mask, filter.HeaderLookup); candidates.Add(filter, can); Uri soapToAddress = filter.Address.Uri; CandidateSet cset; if (!TryMatchCandidateSet(soapToAddress, filter.IncludeHostNameInComparison, out cset)) { cset = new CandidateSet(); GetAddressTable(filter.IncludeHostNameInComparison).RegisterUri(soapToAddress, GetComparisonMode(filter.IncludeHostNameInComparison), cset); } cset.candidates.Add(can); IncrementQNameCount(cset, filter.Address); }
public bool Remove(PrefixEndpointAddressMessageFilter filter) { if (filter == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(filter)); } if (!filters.Remove(filter)) { return(false); } Candidate can = candidates[filter]; Uri soapToAddress = filter.Address.Uri; if (TryMatchCandidateSet(soapToAddress, filter.IncludeHostNameInComparison, out CandidateSet cset)) { if (cset._candidates.Count == 1) { GetAddressTable(filter.IncludeHostNameInComparison).UnregisterUri(soapToAddress, GetComparisonMode(filter.IncludeHostNameInComparison)); } else { DecrementQNameCount(cset, filter.Address); // Remove Candidate cset._candidates.Remove(can); } } candidates.Remove(filter); RebuildMasks(); return(true); }
public override bool Remove(MessageFilter filter) { if (filter == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("filter"); } PrefixEndpointAddressMessageFilter pFilter = filter as PrefixEndpointAddressMessageFilter; if (pFilter != null) { return(Remove(pFilter)); } return(false); }