2 // System.Runtime.Remoting.Channels.SoapServerFormatterSinkProvider.cs
\r
4 // Author: Rodrigo Moya (rodrigo@ximian.com)
\r
5 // Lluis Sanchez Gual (lluis@ximian.com)
\r
7 // 2002 (C) Copyright, Ximian, Inc.
\r
11 // Permission is hereby granted, free of charge, to any person obtaining
\r
12 // a copy of this software and associated documentation files (the
\r
13 // "Software"), to deal in the Software without restriction, including
\r
14 // without limitation the rights to use, copy, modify, merge, publish,
\r
15 // distribute, sublicense, and/or sell copies of the Software, and to
\r
16 // permit persons to whom the Software is furnished to do so, subject to
\r
17 // the following conditions:
\r
19 // The above copyright notice and this permission notice shall be
\r
20 // included in all copies or substantial portions of the Software.
\r
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
\r
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
\r
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
\r
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
\r
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
\r
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
\r
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\r
31 using System.Collections;
\r
32 using System.Runtime.Serialization.Formatters;
\r
33 using System.Runtime.InteropServices;
\r
35 namespace System.Runtime.Remoting.Channels
\r
37 public class SoapServerFormatterSinkProvider :
\r
38 IServerFormatterSinkProvider, IServerChannelSinkProvider
\r
40 private IServerChannelSinkProvider _next;
\r
44 internal static string[] AllowedProperties = new string [] { "includeVersions", "strictBinding" };
\r
46 internal static string[] AllowedProperties = new string [] { "includeVersions", "strictBinding", "typeFilterLevel" };
\r
49 public SoapServerFormatterSinkProvider ()
\r
51 _soapCore = SoapCore.DefaultInstance;
\r
54 public SoapServerFormatterSinkProvider (IDictionary properties,
\r
55 ICollection providerData)
\r
57 _soapCore = new SoapCore (this, properties, AllowedProperties);
\r
60 public IServerChannelSinkProvider Next
\r
62 get { return _next; }
\r
64 set { _next = value; }
\r
69 public TypeFilterLevel TypeFilterLevel
\r
71 get { return _soapCore.TypeFilterLevel; }
\r
74 IDictionary props = (IDictionary) ((ICloneable)_soapCore.Properties).Clone ();
\r
75 props ["typeFilterLevel"] = value;
\r
76 _soapCore = new SoapCore (this, props, AllowedProperties);
\r
81 public IServerChannelSink CreateSink (IChannelReceiver channel)
\r
83 IServerChannelSink chain = _next.CreateSink(channel);
\r
84 SoapServerFormatterSink sinkFormatter = new SoapServerFormatterSink(SoapServerFormatterSink.Protocol.Http, chain, channel);
\r
85 sinkFormatter.SoapCore = _soapCore;
\r
87 return sinkFormatter;
\r
90 public void GetChannelData (IChannelDataStore channelData)
\r
93 _next.GetChannelData(channelData);
\r