public override void Add(EndpointAddressMessageFilter filter, TFilterData data)
        {
            if (filter == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("filter");
            }

            Fx.Assert("EndpointAddressMessageFilter cannot be added to PrefixEndpointAddressMessageFilterTable");
            throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException("EndpointAddressMessageFilter cannot be added to PrefixEndpointAddressMessageFilterTable"));
        }
        public override bool Remove(EndpointAddressMessageFilter filter)
        {
            if (filter == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("filter");
            }

            Fx.Assert("EndpointAddressMessageFilter cannot be removed from PrefixEndpointAddressMessageFilterTable");
            throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException("EndpointAddressMessageFilter cannot be removed from PrefixEndpointAddressMessageFilterTable"));
        }
        public virtual bool Remove(EndpointAddressMessageFilter 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;

            CandidateSet cset = null;

            if (filter.IncludeHostNameInComparison)
            {
                cset = toHostLookup[soapToAddress];
            }
            else
            {
                cset = toNoHostLookup[soapToAddress];
            }

            candidates.Remove(filter);

            if (cset.candidates.Count == 1)
            {
                if (filter.IncludeHostNameInComparison)
                {
                    toHostLookup.Remove(soapToAddress);
                }
                else
                {
                    toNoHostLookup.Remove(soapToAddress);
                }
            }
            else
            {
                DecrementQNameCount(cset, filter.Address);

                // Remove Candidate
                cset.candidates.Remove(can);
            }

            RebuildMasks();
            return(true);
        }
        public virtual bool Remove(MessageFilter filter)
        {
            if (filter == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(filter));
            }

            EndpointAddressMessageFilter saFilter = filter as EndpointAddressMessageFilter;

            if (saFilter != null)
            {
                return(Remove(saFilter));
            }

            return(false);
        }
示例#5
0
        public virtual void Add(EndpointAddressMessageFilter filter, TFilterData data)
        {
            if (filter == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull(nameof(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);

            CandidateSet cset;
            Uri          soapToAddress = filter.Address.Uri;

            if (filter.IncludeHostNameInComparison)
            {
                if (!_toHostLookup.TryGetValue(soapToAddress, out cset))
                {
                    cset = new CandidateSet();
                    _toHostLookup.Add(soapToAddress, cset);
                }
            }
            else
            {
                if (!_toNoHostLookup.TryGetValue(soapToAddress, out cset))
                {
                    cset = new CandidateSet();
                    _toNoHostLookup.Add(soapToAddress, cset);
                }
            }
            cset._candidates.Add(can);

            IncrementQNameCount(cset, filter.Address);
        }