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
- ChangeConflicts.cs
- ResizeGrip.cs
- DataTableTypeConverter.cs
- DbDataReader.cs
- SimpleWebHandlerParser.cs
- AdCreatedEventArgs.cs
- APCustomTypeDescriptor.cs
- SafeNativeMethodsOther.cs
- MetadataItemSerializer.cs
- SafeNativeMethodsMilCoreApi.cs
- ComponentManagerBroker.cs
- DataGridViewImageCell.cs
- Quad.cs
- StyleXamlTreeBuilder.cs
- Models.cs
- XmlTextReaderImplHelpers.cs
- XmlName.cs
- QueryException.cs
- QilGenerator.cs
- DaylightTime.cs
- StateMachineTimers.cs
- OleDbCommand.cs
- OSFeature.cs
- DesignObjectWrapper.cs
- IriParsingElement.cs
- ExpressionBindings.cs
- InkCanvas.cs
- KeyedHashAlgorithm.cs
- SystemNetworkInterface.cs
- XmlDigitalSignatureProcessor.cs
- XmlReflectionMember.cs
- RelationshipSet.cs
- HttpCacheParams.cs
- SymmetricAlgorithm.cs
- DelegateSerializationHolder.cs
- ExpressionDumper.cs
- ObservableDictionary.cs
- WebConfigurationHost.cs
- SiteMembershipCondition.cs
- ImageMapEventArgs.cs
- documentsequencetextcontainer.cs
- SharedUtils.cs
- ButtonBaseAutomationPeer.cs
- NonClientArea.cs
- ServiceMoniker.cs
- WCFModelStrings.Designer.cs
- DBPropSet.cs
- CategoryAttribute.cs
- SafeUserTokenHandle.cs
- EventSchemaTraceListener.cs
- WindowsTooltip.cs
- DateTimeOffsetAdapter.cs
- DataGridItem.cs
- WindowsProgressbar.cs
- SplashScreenNativeMethods.cs
- MetadataCache.cs
- ObjectViewEntityCollectionData.cs
- ConnectorDragDropGlyph.cs
- ByteKeyFrameCollection.cs
- CodeMethodReturnStatement.cs
- _HeaderInfo.cs
- SimpleWorkerRequest.cs
- Documentation.cs
- AttributeUsageAttribute.cs
- XmlUtf8RawTextWriter.cs
- PagesSection.cs
- AttributeEmitter.cs
- RowBinding.cs
- Vector3DValueSerializer.cs
- ClientCultureInfo.cs
- LookupBindingPropertiesAttribute.cs
- HttpStaticObjectsCollectionBase.cs
- VersionConverter.cs
- ZipIOCentralDirectoryFileHeader.cs
- GenericWebPart.cs
- OleAutBinder.cs
- MobileDeviceCapabilitiesSectionHandler.cs
- XmlHierarchyData.cs
- IssuedTokenParametersEndpointAddressElement.cs
- AlphabeticalEnumConverter.cs
- RefType.cs
- ColumnWidthChangingEvent.cs
- SystemIPAddressInformation.cs
- PointValueSerializer.cs
- KeyEvent.cs
- DynamicPropertyHolder.cs
- HwndTarget.cs
- ExpressionHelper.cs
- GridViewRow.cs
- ViewKeyConstraint.cs
- WorkflowInstanceExtensionCollection.cs
- FixedTextView.cs
- XLinq.cs
- GridViewRowCollection.cs
- XmlSchemaProviderAttribute.cs
- DataReceivedEventArgs.cs
- Style.cs
- DataServiceStreamProviderWrapper.cs
- RegistryDataKey.cs
- MetafileHeaderWmf.cs