Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Dispatcher / prefixendpointaddressmessagefiltertable.cs / 1 / prefixendpointaddressmessagefiltertable.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Dispatcher { using System; using System.ServiceModel.Channels; using System.ServiceModel; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.IO; using System.ServiceModel.Security; using System.Xml; using QName = System.ServiceModel.Dispatcher.EndpointAddressProcessor.QName; using HeaderBit = System.ServiceModel.Dispatcher.EndpointAddressProcessor.HeaderBit; using System.ServiceModel.Diagnostics; internal class PrefixEndpointAddressMessageFilterTable: EndpointAddressMessageFilterTable { UriPrefixTable toHostTable; UriPrefixTable toNoHostTable; public PrefixEndpointAddressMessageFilterTable() : base() { } protected override void InitializeLookupTables() { this.toHostTable = new UriPrefixTable (); this.toNoHostTable = new UriPrefixTable (); } public override void Add(MessageFilter filter, TFilterData data) { if (filter == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("filter"); } Add((PrefixEndpointAddressMessageFilter)filter, data); } public override void Add(EndpointAddressMessageFilter filter, TFilterData data) { if (filter == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("filter"); } DiagnosticUtility.DebugAssert("EndpointAddressMessageFilter cannot be added to PrefixEndpointAddressMessageFilterTable"); throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException("EndpointAddressMessageFilter cannot be added to PrefixEndpointAddressMessageFilterTable")); } public void Add(PrefixEndpointAddressMessageFilter filter, TFilterData data) { if (filter == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("filter"); } this.filters.Add(filter, data); // Create the candidate byte[] mask = BuildMask(filter.HeaderLookup); Candidate can = new Candidate(filter, data, mask, filter.HeaderLookup); this.candidates.Add(filter, can); #pragma warning suppress 56506 // [....], PrefixEndpointAddressMessageFilter.Address can never be null 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); } HostNameComparisonMode GetComparisonMode(bool includeHostNameInComparison) { return includeHostNameInComparison ? HostNameComparisonMode.Exact : HostNameComparisonMode.StrongWildcard; } UriPrefixTable GetAddressTable(bool includeHostNameInComparison) { return includeHostNameInComparison ? this.toHostTable : this.toNoHostTable; } internal override bool TryMatchCandidateSet(Uri to, bool includeHostNameInComparison, out CandidateSet cset) { return GetAddressTable(includeHostNameInComparison).TryLookupUri(to, GetComparisonMode(includeHostNameInComparison), out cset); } protected override void ClearLookupTables() { this.toHostTable = new UriPrefixTable .CandidateSet>(); this.toNoHostTable = new UriPrefixTable .CandidateSet>(); } 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; } public override bool Remove(EndpointAddressMessageFilter filter) { if (filter == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("filter"); } DiagnosticUtility.DebugAssert("EndpointAddressMessageFilter cannot be removed from PrefixEndpointAddressMessageFilterTable"); throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException("EndpointAddressMessageFilter cannot be removed from PrefixEndpointAddressMessageFilterTable")); } public bool Remove(PrefixEndpointAddressMessageFilter filter) { if (filter == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("filter"); } if(!this.filters.Remove(filter)) { return false; } Candidate can = this.candidates[filter]; #pragma warning suppress 56506 // [....], PrefixEndpointAddressMessageFilter.Address can never be null Uri soapToAddress = filter.Address.Uri; CandidateSet cset = null; if (TryMatchCandidateSet(soapToAddress, filter.IncludeHostNameInComparison, out 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); } } this.candidates.Remove(filter); RebuildMasks(); return true; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DateBoldEvent.cs
- ScriptingSectionGroup.cs
- BrowserCapabilitiesFactory.cs
- TextServicesProperty.cs
- WebControlsSection.cs
- TableItemPattern.cs
- LineMetrics.cs
- ThousandthOfEmRealDoubles.cs
- CreateUserErrorEventArgs.cs
- JsonFormatWriterGenerator.cs
- ImportOptions.cs
- LineSegment.cs
- PageParserFilter.cs
- WebPageTraceListener.cs
- ThreadAttributes.cs
- LookupNode.cs
- Helper.cs
- elementinformation.cs
- PropertyGroupDescription.cs
- ProcessThreadCollection.cs
- RelationshipConstraintValidator.cs
- handlecollector.cs
- MailMessage.cs
- CookieProtection.cs
- WSFederationHttpBindingCollectionElement.cs
- webclient.cs
- NotifyCollectionChangedEventArgs.cs
- TableSectionStyle.cs
- SqlComparer.cs
- XmlReader.cs
- OracleBFile.cs
- CodeNamespaceCollection.cs
- VSWCFServiceContractGenerator.cs
- XpsFilter.cs
- ExtendedProtectionPolicy.cs
- Decorator.cs
- PowerStatus.cs
- TreeChangeInfo.cs
- FlowDocumentView.cs
- CalendarButton.cs
- TextAnchor.cs
- WebPartConnectionsCancelVerb.cs
- BeginEvent.cs
- Debugger.cs
- PackageDigitalSignature.cs
- ParseNumbers.cs
- RightNameExpirationInfoPair.cs
- DelegateBodyWriter.cs
- HttpResponse.cs
- IgnoreFileBuildProvider.cs
- UnsafeNetInfoNativeMethods.cs
- Roles.cs
- InvokePatternIdentifiers.cs
- GeneralTransform3D.cs
- PanelStyle.cs
- Sequence.cs
- TypeUtils.cs
- LiteralTextContainerControlBuilder.cs
- CultureSpecificStringDictionary.cs
- BitmapFrameDecode.cs
- ActivityContext.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- XmlNavigatorFilter.cs
- TemplatedMailWebEventProvider.cs
- BufferedWebEventProvider.cs
- NumberFormatInfo.cs
- NetMsmqSecurityElement.cs
- GridViewUpdateEventArgs.cs
- MenuRendererStandards.cs
- MenuItem.cs
- UInt16Storage.cs
- FixedSOMGroup.cs
- XmlDataLoader.cs
- XmlMemberMapping.cs
- OAVariantLib.cs
- IsolationInterop.cs
- ProtocolViolationException.cs
- AttachedProperty.cs
- DesignerForm.cs
- NetworkInformationPermission.cs
- StateWorkerRequest.cs
- HtmlImage.cs
- ArrayWithOffset.cs
- Popup.cs
- ImageMap.cs
- ServerIdentity.cs
- ClientRoleProvider.cs
- SoapIncludeAttribute.cs
- Matrix3DStack.cs
- RootBrowserWindowAutomationPeer.cs
- CodeChecksumPragma.cs
- FormView.cs
- TypeConstant.cs
- ProcessExitedException.cs
- RecordBuilder.cs
- StandardRuntimeEnumValidatorAttribute.cs
- UriTemplateDispatchFormatter.cs
- DataListItemEventArgs.cs
- _DomainName.cs
- DBDataPermission.cs