//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------- namespace System.ServiceModel.Routing { using System.Collections.Generic; using System.Configuration; using System.Diagnostics.CodeAnalysis; using System.Runtime; using System.ServiceModel.Description; using System.ServiceModel.Dispatcher; [Fx.Tag.XamlVisible(false)] public sealed class RoutingConfiguration { internal const bool DefaultRouteOnHeadersOnly = true; internal const bool DefaultSoapProcessingEnabled = true; internal const bool DefaultEnsureOrderedDispatch = false; bool configured; MessageFilterTable> filterTable; public RoutingConfiguration() : this(new MessageFilterTable>(), DefaultRouteOnHeadersOnly) { this.configured = false; } public RoutingConfiguration (MessageFilterTable> filterTable, bool routeOnHeadersOnly) { if (filterTable == null) { throw FxTrace.Exception.ArgumentNull("filterTable"); } this.configured = true; //User handed us the FilterTable, assume it's valid/configured this.filterTable = filterTable; this.RouteOnHeadersOnly = routeOnHeadersOnly; this.SoapProcessingEnabled = DefaultSoapProcessingEnabled; this.EnsureOrderedDispatch = DefaultEnsureOrderedDispatch; } public MessageFilterTable> FilterTable { get { this.configured = true; return this.filterTable; } } internal MessageFilterTable> InternalFilterTable { get { return this.filterTable; } } public bool RouteOnHeadersOnly { get; set; } public bool SoapProcessingEnabled { get; set; } public bool EnsureOrderedDispatch { get; set; } [SuppressMessage(FxCop.Category.Performance, FxCop.Rule.AvoidUncalledPrivateCode, Justification = "This gets called in RoutingService..ctor")] internal void VerifyConfigured() { if (!this.configured) { throw FxTrace.Exception.AsError(new ConfigurationErrorsException(SR.RoutingTableNotConfigured)); } } } }