1 //---------------------------------------------------------------- 2 // Copyright (c) Microsoft Corporation. All rights reserved. 3 //---------------------------------------------------------------- 4 5 namespace System.ServiceModel.Routing 6 { 7 using System; 8 using System.Diagnostics.CodeAnalysis; 9 using System.Runtime; 10 using System.ServiceModel; 11 using System.ServiceModel.Dispatcher; 12 13 [Fx.Tag.XamlVisible(false)] 14 public sealed class RoutingExtension : IExtension<ServiceHostBase> 15 { 16 volatile RoutingConfiguration configuration; 17 RoutingExtension(RoutingConfiguration configuration)18 internal RoutingExtension(RoutingConfiguration configuration) 19 { 20 Fx.Assert(configuration != null, "Configuration required"); 21 22 if (TD.RoutingServiceDisplayConfigIsEnabled()) 23 { 24 TD.RoutingServiceDisplayConfig( 25 configuration.RouteOnHeadersOnly.ToString(TD.Culture), 26 configuration.SoapProcessingEnabled.ToString(TD.Culture), 27 configuration.EnsureOrderedDispatch.ToString(TD.Culture)); 28 } 29 this.configuration = configuration; 30 } 31 32 [SuppressMessage(FxCop.Category.Performance, FxCop.Rule.AvoidUncalledPrivateCode, Justification = "This gets called in RoutingService..ctor")] 33 internal RoutingConfiguration RoutingConfiguration 34 { 35 get 36 { 37 return this.configuration; 38 } 39 } 40 Attach(ServiceHostBase owner)41 void IExtension<ServiceHostBase>.Attach(ServiceHostBase owner) 42 { 43 } 44 Detach(ServiceHostBase owner)45 void IExtension<ServiceHostBase>.Detach(ServiceHostBase owner) 46 { 47 } 48 ApplyConfiguration(RoutingConfiguration routingConfiguration)49 public void ApplyConfiguration(RoutingConfiguration routingConfiguration) 50 { 51 if (routingConfiguration == null) 52 { 53 throw FxTrace.Exception.ArgumentNull("routingConfiguration"); 54 } 55 56 if (TD.RoutingServiceConfigurationAppliedIsEnabled()) 57 { 58 TD.RoutingServiceConfigurationApplied(); 59 } 60 if (TD.RoutingServiceDisplayConfigIsEnabled()) 61 { 62 TD.RoutingServiceDisplayConfig( 63 routingConfiguration.RouteOnHeadersOnly.ToString(TD.Culture), 64 routingConfiguration.SoapProcessingEnabled.ToString(TD.Culture), 65 routingConfiguration.EnsureOrderedDispatch.ToString(TD.Culture)); 66 } 67 68 this.configuration = routingConfiguration; 69 } 70 } 71 } 72