2 // TextMessageEncodingBindingElement.cs
5 // Atsushi Enomoto <atsushi@ximian.com>
7 // Copyright (C) 2005 Novell, Inc. http://www.novell.com
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 using System.ServiceModel.Channels;
30 using System.ServiceModel.Description;
34 namespace System.ServiceModel.Channels
37 public sealed class TextMessageEncodingBindingElement
38 : MessageEncodingBindingElement,
39 IWsdlExportExtension, IPolicyExportExtension
41 // FIXME: they might be configurable.
42 MessageVersion version = MessageVersion.Default;
43 int max_read_pool_size = 64;
44 int max_write_pool_size = 16;
45 XmlDictionaryReaderQuotas quotas =
46 new XmlDictionaryReaderQuotas ();
49 public TextMessageEncodingBindingElement ()
50 : this (MessageVersion.Default, Encoding.UTF8)
54 public TextMessageEncodingBindingElement (
55 MessageVersion messageVersion,
56 Encoding writeEncoding)
58 version = messageVersion;
59 encoding = writeEncoding;
62 private TextMessageEncodingBindingElement (
63 TextMessageEncodingBindingElement source)
65 version = source.version;
66 max_read_pool_size = source.max_read_pool_size;
67 max_write_pool_size = source.max_write_pool_size;
68 encoding = source.encoding;
70 quotas = new XmlDictionaryReaderQuotas ();
71 source.quotas.CopyTo (quotas);
74 public override MessageVersion MessageVersion {
75 get { return version; }
76 set { version = value; }
79 public int MaxReadPoolSize {
80 get { return max_read_pool_size; }
81 set { max_read_pool_size = value; }
84 public int MaxWritePoolSize {
85 get { return max_write_pool_size; }
86 set { max_write_pool_size = value; }
89 public XmlDictionaryReaderQuotas ReaderQuotas {
90 get { return quotas; }
91 set { quotas = value; }
94 public Encoding WriteEncoding {
95 get { return encoding; }
96 set { encoding = value; }
99 public override IChannelFactory<TChannel> BuildChannelFactory<TChannel> (
100 BindingContext context)
103 throw new ArgumentNullException ("context");
104 //context.RemainingBindingElements.Add (this);
105 return base.BuildChannelFactory<TChannel> (context);
109 public override IChannelListener<TChannel> BuildChannelListener<TChannel> (
110 BindingContext context)
113 throw new ArgumentNullException ("context");
114 //context.RemainingBindingElements.Add (this);
115 return base.BuildChannelListener<TChannel> (context);
118 public override bool CanBuildChannelListener<TChannel> (
119 BindingContext context)
122 throw new ArgumentNullException ("context");
123 return context.CanBuildInnerChannelListener<TChannel> ();
127 public override BindingElement Clone ()
129 return new TextMessageEncodingBindingElement (this);
133 public override T GetProperty<T> (BindingContext context)
135 if (typeof (T) == typeof (MessageVersion))
136 return (T) (object) MessageVersion;
137 return context.GetInnerProperty<T> ();
140 public override MessageEncoderFactory
141 CreateMessageEncoderFactory ()
143 return new TextMessageEncoderFactory (this);
146 #if !NET_2_1 && !XAMMAC_4_5
148 protected override void OnImportPolicy (XmlElement assertion,
149 MessageVersion messageVersion,
150 MetadataImporter exporter,
151 PolicyConversionContext context)
153 throw new NotImplementedException ();
157 void IWsdlExportExtension.ExportContract (WsdlExporter exporter,
158 WsdlContractConversionContext context)
160 throw new NotImplementedException ();
163 void IWsdlExportExtension.ExportEndpoint (WsdlExporter exporter,
164 WsdlEndpointConversionContext context)
168 void IPolicyExportExtension.ExportPolicy (MetadataExporter exporter,
169 PolicyConversionContext context)