2 // WebMessageEncodingBindingElement.cs
5 // Atsushi Enomoto <atsushi@ximian.com>
7 // Copyright (C) 2008 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;
30 using System.ServiceModel.Description;
34 namespace System.ServiceModel.Channels
36 public sealed class WebMessageEncodingBindingElement
38 : MessageEncodingBindingElement
40 : MessageEncodingBindingElement, IWsdlExportExtension
43 Encoding write_encoding;
44 WebContentTypeMapper content_type_mapper;
45 int max_read_pool_size = 0x10000, max_write_pool_size = 0x10000;
49 public WebMessageEncodingBindingElement ()
50 : this (Encoding.UTF8)
54 public WebMessageEncodingBindingElement (Encoding writeEncoding)
56 if (writeEncoding == null)
57 throw new ArgumentNullException ("writeEncoding");
58 WriteEncoding = writeEncoding;
59 ReaderQuotas = new XmlDictionaryReaderQuotas ();
64 public WebContentTypeMapper ContentTypeMapper {
65 get { return content_type_mapper; }
66 set { content_type_mapper = value; }
70 public int MaxReadPoolSize {
71 get { return max_read_pool_size; }
72 set { max_read_pool_size = value; }
76 public int MaxWritePoolSize {
77 get { return max_write_pool_size; }
78 set { max_write_pool_size = value; }
81 public override MessageVersion MessageVersion {
82 get { return MessageVersion.None; }
85 throw new ArgumentNullException ("value");
86 if (!value.Equals (MessageVersion.None))
87 throw new ArgumentException ("Only MessageVersion.None is supported for WebMessageEncodingBindingElement");
91 public XmlDictionaryReaderQuotas ReaderQuotas { get; internal set; }
93 public Encoding WriteEncoding {
94 get { return write_encoding; }
97 throw new ArgumentNullException ("value");
98 write_encoding = value;
104 public override IChannelFactory<TChannel> BuildChannelFactory<TChannel> (BindingContext context)
107 throw new ArgumentNullException ("context");
108 context.RemainingBindingElements.Add (this);
109 return base.BuildChannelFactory<TChannel> (context);
113 [MonoTODO ("Why is it overriden?")]
114 public override bool CanBuildChannelListener<TChannel> (BindingContext context)
117 throw new ArgumentNullException ("context");
118 return context.CanBuildInnerChannelListener<TChannel> ();
121 public override IChannelListener<TChannel> BuildChannelListener<TChannel> (BindingContext context)
124 throw new ArgumentNullException ("context");
125 context.RemainingBindingElements.Add (this);
126 return base.BuildChannelListener<TChannel> (context);
130 public override BindingElement Clone ()
132 return (WebMessageEncodingBindingElement) MemberwiseClone ();
135 public override MessageEncoderFactory CreateMessageEncoderFactory ()
137 return new WebMessageEncoderFactory (this);
140 public override T GetProperty<T> (BindingContext context)
142 if (typeof (T) == typeof (MessageVersion))
143 return (T) (object) MessageVersion;
144 if (typeof (T) == typeof (XmlDictionaryReaderQuotas))
145 return (T) (object) ReaderQuotas;
146 return context.GetInnerProperty<T> ();
149 #if !NET_2_1 && !XAMMAC_4_5
151 void IWsdlExportExtension.ExportContract (WsdlExporter exporter, WsdlContractConversionContext context)
153 throw new NotImplementedException ();
157 void IWsdlExportExtension.ExportEndpoint (WsdlExporter exporter, WsdlEndpointConversionContext context)
159 throw new NotImplementedException ();