Merge pull request #1659 from alexanderkyte/stringbuilder-referencesource
[mono.git] / mcs / class / System.Runtime.Remoting / System.Runtime.Remoting.Channels / BinaryCore.cs
index c1d3d6b14f4c32564d969edb9ec305f745e2deca..430bf632f9e07708a8fa8ddc8afee279d9dae206 100644 (file)
@@ -6,6 +6,27 @@
 // 2003 (C) Copyright, Novell, Inc.
 //
 
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
 using System.Collections;
 using System.Runtime.Remoting.Messaging;
 using System.Runtime.Serialization;
@@ -22,16 +43,20 @@ namespace System.Runtime.Remoting.Channels
                bool _strictBinding = false;
                IDictionary _properties;
                
-#if NET_1_1
-               TypeFilterLevel _filterLevel = TypeFilterLevel.Low;
-#endif
-               
-               public static BinaryCore DefaultInstance = new BinaryCore ();
+               TypeFilterLevel _filterLevel;
                
+               public static BinaryCore DefaultInstance = new BinaryCore (TypeFilterLevel.Low);
+               public static readonly BinaryCore DefaultClientInstance = new BinaryCore (TypeFilterLevel.Full);
+
                public BinaryCore (object owner, IDictionary properties, string[] allowedProperties)
                {
                        _properties = properties;
                        
+                       if (_properties == null)
+                       {
+                               _properties = new Hashtable(10);
+                       }
+                       
                        foreach(DictionaryEntry property in properties)
                        {
                                string key = (string) property.Key;
@@ -48,7 +73,6 @@ namespace System.Runtime.Remoting.Channels
                                                _strictBinding = Convert.ToBoolean (property.Value);
                                                break;
                                                
-#if NET_1_1
                                        case "typeFilterLevel":
                                                if (property.Value is TypeFilterLevel)
                                                        _filterLevel = (TypeFilterLevel) property.Value;
@@ -57,7 +81,6 @@ namespace System.Runtime.Remoting.Channels
                                                        _filterLevel = (TypeFilterLevel) Enum.Parse (typeof(TypeFilterLevel), s);
                                                }
                                                break;
-#endif
                                                
                                }
                        }
@@ -65,8 +88,9 @@ namespace System.Runtime.Remoting.Channels
                        Init ();
                }
                
-               public BinaryCore ()
+               public BinaryCore (TypeFilterLevel filterLevel)
                {
+                       _filterLevel = filterLevel;
                        _properties = new Hashtable ();
                        Init ();
                }
@@ -79,10 +103,8 @@ namespace System.Runtime.Remoting.Channels
                        _serializationFormatter = new BinaryFormatter (surrogateSelector, context);
                        _deserializationFormatter = new BinaryFormatter (null, context);
                        
-#if NET_1_1
                        _serializationFormatter.FilterLevel = _filterLevel;
                        _deserializationFormatter.FilterLevel = _filterLevel;
-#endif
                        
                        if (!_includeVersions)
                        {
@@ -112,12 +134,10 @@ namespace System.Runtime.Remoting.Channels
                        get { return _properties; }
                }
                
-#if NET_1_1
                public TypeFilterLevel TypeFilterLevel
                {
                        get { return _filterLevel; }
                }
-#endif
        }
 }