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