1 //----------------------------------------------------------------
2 // Copyright (c) Microsoft Corporation.  All rights reserved.
3 //----------------------------------------------------------------
4 namespace System.ServiceModel
5 {
6     using System.ServiceModel.Channels;
7     using System.ServiceModel.Dispatcher;
8     using System.ServiceModel.Description;
9 
10     [AttributeUsage(ServiceModelAttributeTargets.OperationBehavior)]
11     public sealed class ReceiveContextEnabledAttribute : Attribute, IOperationBehavior
12     {
ReceiveContextEnabledAttribute()13         public ReceiveContextEnabledAttribute()
14         {
15 
16         }
17 
18         public bool ManualControl
19         {
20             get;
21             set;
22         }
23 
Validate(OperationDescription operationDescription)24         public void Validate(OperationDescription operationDescription)
25         {
26 
27         }
28 
ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)29         public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
30         {
31             if (operationDescription == null)
32             {
33                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("operationDescription");
34             }
35 
36             if (dispatchOperation == null)
37             {
38                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("dispatchOperation");
39             }
40 
41             if (this.ManualControl)
42             {
43                 dispatchOperation.ReceiveContextAcknowledgementMode = ReceiveContextAcknowledgementMode.ManualAcknowledgement;
44             }
45             else
46             {
47                 dispatchOperation.ReceiveContextAcknowledgementMode = ReceiveContextAcknowledgementMode.AutoAcknowledgeOnRPCComplete;
48             }
49         }
50 
ApplyClientBehavior(OperationDescription operationDescription, ClientOperation clientOperation)51         public void ApplyClientBehavior(OperationDescription operationDescription, ClientOperation clientOperation)
52         {
53 
54         }
55 
AddBindingParameters(OperationDescription operationDescription, BindingParameterCollection bindingParameters)56         public void AddBindingParameters(OperationDescription operationDescription, BindingParameterCollection bindingParameters)
57         {
58 
59         }
60     }
61 }
62