2 // BinaryMessageEncodingBindingElement.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 BinaryMessageEncodingBindingElement
38 : MessageEncodingBindingElement,
39 IWsdlExportExtension, IPolicyExportExtension
42 // FIXME: they might be configurable.
43 int max_read_pool_size = 64;
44 int max_write_pool_size = 16;
45 XmlDictionaryReaderQuotas quotas =
46 new XmlDictionaryReaderQuotas ();
47 MessageVersion version = MessageVersion.Default;
49 public BinaryMessageEncodingBindingElement ()
53 private BinaryMessageEncodingBindingElement (
54 BinaryMessageEncodingBindingElement other)
56 throw new NotImplementedException ();
59 public override MessageVersion MessageVersion {
60 get { return version; }
62 if (!version.Envelope.Equals (EnvelopeVersion.Soap12))
63 throw new InvalidOperationException ("Binary message encoding binding element only supports SOAP 1.2.");
68 public int MaxSessionSize {
69 get { return max_session_size; }
70 set { max_session_size = value; }
73 public int MaxReadPoolSize {
74 get { return max_read_pool_size; }
75 set { max_read_pool_size = value; }
78 public int MaxWritePoolSize {
79 get { return max_write_pool_size; }
80 set { max_write_pool_size = value; }
83 public XmlDictionaryReaderQuotas ReaderQuotas {
84 get { return quotas; }
85 set { quotas = value; }
88 public override IChannelFactory<TChannel> BuildChannelFactory<TChannel> (
89 BindingContext context)
92 throw new ArgumentNullException ("context");
93 //context.RemainingBindingElements.Add (this);
94 return base.BuildChannelFactory<TChannel> (context);
98 public override IChannelListener<TChannel> BuildChannelListener<TChannel> (
99 BindingContext context)
102 throw new ArgumentNullException ("context");
103 //context.RemainingBindingElements.Add (this);
104 return base.BuildChannelListener<TChannel> (context);
107 public override bool CanBuildChannelListener<TChannel> (
108 BindingContext context)
111 throw new ArgumentNullException ("context");
112 return context.CanBuildInnerChannelListener<TChannel> ();
116 public override BindingElement Clone ()
118 return new BinaryMessageEncodingBindingElement (this);
121 public override T GetProperty<T> (BindingContext context)
123 if (typeof (T) == typeof (MessageVersion))
124 return (T) (object) MessageVersion;
128 public override MessageEncoderFactory
129 CreateMessageEncoderFactory ()
131 return new BinaryMessageEncoderFactory (this);
136 void IWsdlExportExtension.ExportContract (WsdlExporter exporter,
137 WsdlContractConversionContext context)
139 throw new NotImplementedException ();
142 void IWsdlExportExtension.ExportEndpoint (WsdlExporter exporter,
143 WsdlEndpointConversionContext context)
147 void IPolicyExportExtension.ExportPolicy (MetadataExporter exporter,
148 PolicyConversionContext context)
150 PolicyAssertionCollection assertions = context.GetBindingAssertions ();
151 XmlDocument doc = new XmlDocument ();
153 assertions.Add (doc.CreateElement ("msb", "BinaryEncoding", "http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1"));
159 public CompressionFormat CompressionFormat {
160 get { throw new NotImplementedException (); }
161 set { throw new NotImplementedException (); }