1 //---------------------------------------------------------------- 2 // Copyright (c) Microsoft Corporation. All rights reserved. 3 //---------------------------------------------------------------- 4 5 namespace System.ServiceModel.Activities.Description 6 { 7 using System.ServiceModel.Activities.Dispatcher; 8 using System.ServiceModel.Channels; 9 using System.ServiceModel.Description; 10 using System.ServiceModel.Dispatcher; 11 12 //Marker Attribute for StandardEndpoint contract to opt-in for Durable setup. 13 [AttributeUsage(AttributeTargets.Interface, AllowMultiple = false)] 14 public sealed class WorkflowContractBehaviorAttribute : Attribute, IContractBehavior 15 { 16 AddBindingParameters(ContractDescription contractDescription, ServiceEndpoint endpoint, BindingParameterCollection bindingParameters)17 public void AddBindingParameters(ContractDescription contractDescription, ServiceEndpoint endpoint, BindingParameterCollection bindingParameters) 18 { 19 20 } 21 ApplyClientBehavior(ContractDescription contractDescription, ServiceEndpoint endpoint, ClientRuntime clientRuntime)22 public void ApplyClientBehavior(ContractDescription contractDescription, ServiceEndpoint endpoint, ClientRuntime clientRuntime) 23 { 24 25 } 26 ApplyDispatchBehavior(ContractDescription contractDescription, ServiceEndpoint endpoint, DispatchRuntime dispatchRuntime)27 public void ApplyDispatchBehavior(ContractDescription contractDescription, ServiceEndpoint endpoint, DispatchRuntime dispatchRuntime) 28 { 29 //Only when DurableServiceBehavior is present ensure this endpoint operates in wrapped mode. 30 if (dispatchRuntime.ChannelDispatcher.Host.Description.Behaviors.Contains(typeof(WorkflowServiceBehavior))) 31 { 32 foreach (OperationDescription operation in contractDescription.Operations) 33 { 34 if (operation.Behaviors.Find<ControlOperationBehavior>() == null) 35 { 36 operation.Behaviors.Add(new ControlOperationBehavior(true)); 37 } 38 } 39 } 40 } 41 Validate(ContractDescription contractDescription, ServiceEndpoint endpoint)42 public void Validate(ContractDescription contractDescription, ServiceEndpoint endpoint) 43 { 44 45 } 46 } 47 } 48