18d9aea87e45529ce00dc81aa3c83d4422db6502
[mono.git] / mcs / class / referencesource / System.ServiceModel / System / ServiceModel / Configuration / TransportElement.cs
1 //------------------------------------------------------------------------------
2 // Copyright (c) Microsoft Corporation.  All rights reserved.
3 //------------------------------------------------------------------------------
4
5 namespace System.ServiceModel.Configuration
6 {
7     using System.Configuration;
8 using System.ServiceModel.Channels;
9
10     public abstract partial class TransportElement : BindingElementExtensionElement
11     {
12         protected TransportElement()
13         {
14         }
15
16         public override void ApplyConfiguration(BindingElement bindingElement)
17         {
18             base.ApplyConfiguration(bindingElement);
19             TransportBindingElement binding = (TransportBindingElement)bindingElement;
20             binding.ManualAddressing = this.ManualAddressing;
21             binding.MaxBufferPoolSize = this.MaxBufferPoolSize;
22             binding.MaxReceivedMessageSize = this.MaxReceivedMessageSize;
23         }
24
25         public override void CopyFrom(ServiceModelExtensionElement from)
26         {
27             base.CopyFrom(from);
28
29             TransportElement source = (TransportElement)from;
30 #pragma warning suppress 56506 // Microsoft, base.CopyFrom() validates the argument
31             this.ManualAddressing = source.ManualAddressing;
32             this.MaxBufferPoolSize = source.MaxBufferPoolSize;
33             this.MaxReceivedMessageSize = source.MaxReceivedMessageSize;
34         }
35
36         protected internal override BindingElement CreateBindingElement()
37         {
38             TransportBindingElement binding = this.CreateDefaultBindingElement();
39             this.ApplyConfiguration(binding);
40             return binding;
41         }
42
43         protected abstract TransportBindingElement CreateDefaultBindingElement();
44
45         protected internal override void InitializeFrom(BindingElement bindingElement)
46         {
47             base.InitializeFrom(bindingElement);
48             TransportBindingElement binding = (TransportBindingElement)bindingElement;
49             SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ManualAddressing, binding.ManualAddressing);
50             SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxBufferPoolSize, binding.MaxBufferPoolSize);
51             SetPropertyValueIfNotDefaultValue(ConfigurationStrings.MaxReceivedMessageSize, binding.MaxReceivedMessageSize);
52         }
53
54         [ConfigurationProperty(ConfigurationStrings.ManualAddressing, DefaultValue = false)]
55         public bool ManualAddressing
56         {
57             get { return (bool)base[ConfigurationStrings.ManualAddressing]; }
58             set { base[ConfigurationStrings.ManualAddressing] = value; }
59         }
60
61         [ConfigurationProperty(ConfigurationStrings.MaxBufferPoolSize, DefaultValue = TransportDefaults.MaxBufferPoolSize)]
62         [LongValidator(MinValue = 1)]
63         public long MaxBufferPoolSize
64         {
65             get { return (long)base[ConfigurationStrings.MaxBufferPoolSize]; }
66             set { base[ConfigurationStrings.MaxBufferPoolSize] = value; }
67         }
68
69         [ConfigurationProperty(ConfigurationStrings.MaxReceivedMessageSize, DefaultValue = TransportDefaults.MaxReceivedMessageSize)]
70         [LongValidator(MinValue = 1)]
71         public long MaxReceivedMessageSize
72         {
73             get { return (long)base[ConfigurationStrings.MaxReceivedMessageSize]; }
74             set { base[ConfigurationStrings.MaxReceivedMessageSize] = value; }
75         }
76     }
77 }
78
79
80