2004-12-08 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / corlib / System.Runtime.Serialization.Formatters.Binary / MessageFormatter.cs
index bfa81699a05df03bd327e78bd3939255d6ceb043..8347f04482343753eb869167295202084d2caa72 100644 (file)
@@ -5,6 +5,29 @@
 //
 // (C) 2003, Lluis Sanchez Gual
 //\r
+
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// 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.
+//
 \r
 using System;\r
 using System.IO;\r
@@ -18,7 +41,7 @@ namespace System.Runtime.Serialization.Formatters.Binary
 {\r
        internal class MessageFormatter\r
        {\r
-               public static void WriteMethodCall (BinaryWriter writer, object obj, Header[] headers, ISurrogateSelector surrogateSelector, StreamingContext context)\r
+               public static void WriteMethodCall (BinaryWriter writer, object obj, Header[] headers, ISurrogateSelector surrogateSelector, StreamingContext context, FormatterAssemblyStyle assemblyFormat)\r
                {\r
                        IMethodCallMessage call = (IMethodCallMessage)obj;\r
                        writer.Write ((byte) BinaryElement.MethodCall);\r
@@ -83,7 +106,7 @@ namespace System.Runtime.Serialization.Formatters.Binary
                        if ((methodFlags & MethodFlags.PrimitiveArguments) > 0)\r
                        {\r
                                writer.Write ((uint)call.Args.Length);\r
-                               for (int n=0; n<call.InArgCount; n++)\r
+                               for (int n=0; n<call.ArgCount; n++)\r
                                {\r
                                        object arg = call.GetArg(n);\r
                                        if (arg != null) {\r
@@ -110,14 +133,14 @@ namespace System.Runtime.Serialization.Formatters.Binary
 \r
                        if (info != null)\r
                        {\r
-                               ObjectWriter objectWriter = new ObjectWriter(surrogateSelector, context);\r
+                               ObjectWriter objectWriter = new ObjectWriter (surrogateSelector, context, assemblyFormat);\r
                                objectWriter.WriteObjectGraph (writer, info, headers);\r
                        }\r
                        else\r
                                writer.Write ((byte) BinaryElement.End);\r
                }\r
 \r
-               public static void WriteMethodResponse (BinaryWriter writer, object obj, Header[] headers, ISurrogateSelector surrogateSelector, StreamingContext context)\r
+               public static void WriteMethodResponse (BinaryWriter writer, object obj, Header[] headers, ISurrogateSelector surrogateSelector, StreamingContext context, FormatterAssemblyStyle assemblyFormat)\r
                {\r
                        IMethodReturnMessage resp = (IMethodReturnMessage)obj;\r
                        writer.Write ((byte) BinaryElement.MethodResponse);\r
@@ -171,7 +194,7 @@ namespace System.Runtime.Serialization.Formatters.Binary
                                formatFlag = MethodFlags.NoArguments;\r
                        else \r
                        {\r
-                               if (AllTypesArePrimitive (resp.OutArgs)) \r
+                               if (AllTypesArePrimitive (resp.Args)) \r
                                        formatFlag = MethodFlags.PrimitiveArguments;\r
                                else \r
                                {\r
@@ -201,10 +224,10 @@ namespace System.Runtime.Serialization.Formatters.Binary
 \r
                        if (formatFlag == MethodFlags.PrimitiveArguments)\r
                        {\r
-                               writer.Write ((uint)resp.OutArgCount);\r
-                               for (int n=0; n<resp.OutArgCount; n++)\r
+                               writer.Write ((uint)resp.ArgCount);\r
+                               for (int n=0; n<resp.ArgCount; n++)\r
                                {\r
-                                       object val = resp.GetOutArg(n);\r
+                                       object val = resp.GetArg(n);\r
                                        if (val != null) {\r
                                                writer.Write (BinaryCommon.GetTypeCode (val.GetType()));\r
                                                ObjectWriter.WritePrimitiveValue (writer, val);\r
@@ -220,7 +243,7 @@ namespace System.Runtime.Serialization.Formatters.Binary
                                int n = 0;\r
 \r
                                if (formatFlag == MethodFlags.ArgumentsInMultiArray)\r
-                                       infoArray[n++] = resp.OutArgs;\r
+                                       infoArray[n++] = resp.Args;\r
 \r
                                if (returnTypeTag == ReturnTypeTag.ObjectType)\r
                                        infoArray[n++] = resp.ReturnValue;\r
@@ -234,18 +257,18 @@ namespace System.Runtime.Serialization.Formatters.Binary
                                info = infoArray;\r
                        }\r
                        else if ((formatFlag & MethodFlags.ArgumentsInSimpleArray) > 0)\r
-                               info = resp.OutArgs;\r
+                               info = resp.Args;\r
 \r
                        if (info != null)\r
                        {\r
-                               ObjectWriter objectWriter = new ObjectWriter(surrogateSelector, context);\r
+                               ObjectWriter objectWriter = new ObjectWriter (surrogateSelector, context, assemblyFormat);\r
                                objectWriter.WriteObjectGraph (writer, info, headers);\r
                        }\r
                        else\r
                                writer.Write ((byte) BinaryElement.End);\r
                }\r
 \r
-               public static object ReadMethodCall (BinaryReader reader, bool hasHeaders, HeaderHandler headerHandler, ISurrogateSelector surrogateSelector, StreamingContext context, SerializationBinder binder)\r
+               public static object ReadMethodCall (BinaryReader reader, bool hasHeaders, HeaderHandler headerHandler, BinaryFormatter formatter)\r
                {\r
                        BinaryElement elem = (BinaryElement)reader.ReadByte();  // The element code\r
                        if (elem != BinaryElement.MethodCall) throw new SerializationException("Invalid format. Expected BinaryElement.MethodCall, found " +  elem);\r
@@ -263,7 +286,7 @@ namespace System.Runtime.Serialization.Formatters.Binary
                        if (((BinaryTypeCode)reader.ReadByte()) != BinaryTypeCode.String) throw new SerializationException ("Invalid format");\r
                        string className = reader.ReadString();\r
 \r
-                       bool hasContextInfo = (flags & MethodFlags.IncludesLogicalCallContext) > 0;
+                       //bool hasContextInfo = (flags & MethodFlags.IncludesLogicalCallContext) > 0;
 
                        object[] arguments = null;
                        object methodSignature = null;
@@ -284,7 +307,7 @@ namespace System.Runtime.Serialization.Formatters.Binary
 
                        if ((flags & MethodFlags.NeedsInfoArrayMask) > 0)\r
                        {\r
-                               ObjectReader objectReader = new ObjectReader(surrogateSelector, context, binder);\r
+                               ObjectReader objectReader = new ObjectReader (formatter);\r
 \r
                                object result;\r
                                objectReader.ReadObjectGraph (reader, hasHeaders, out result, out headers);\r
@@ -339,7 +362,7 @@ namespace System.Runtime.Serialization.Formatters.Binary
                        return call;
                }\r
 \r
-               public static object ReadMethodResponse (BinaryReader reader, bool hasHeaders, HeaderHandler headerHandler, IMethodCallMessage methodCallMessage, ISurrogateSelector surrogateSelector, StreamingContext context, SerializationBinder binder)\r
+               public static object ReadMethodResponse (BinaryReader reader, bool hasHeaders, HeaderHandler headerHandler, IMethodCallMessage methodCallMessage, BinaryFormatter formatter)\r
                {\r
                        BinaryElement elem = (BinaryElement)reader.ReadByte();  // The element code\r
                        if (elem != BinaryElement.MethodResponse) throw new SerializationException("Invalid format. Expected BinaryElement.MethodResponse, found " +  elem);\r
@@ -382,7 +405,7 @@ namespace System.Runtime.Serialization.Formatters.Binary
                        {\r
                                // There objects that need to be deserialized using an ObjectReader\r
 \r
-                               ObjectReader objectReader = new ObjectReader(surrogateSelector, context, binder);\r
+                               ObjectReader objectReader = new ObjectReader (formatter);\r
                                object result;\r
                                objectReader.ReadObjectGraph (reader, hasHeaders, out result, out headers);\r
                                object[] msgInfo = (object[]) result;\r