Return-Path: Delivered-To: apmail-geronimo-activemq-commits-archive@www.apache.org Received: (qmail 34790 invoked from network); 9 Mar 2006 00:44:06 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 9 Mar 2006 00:44:06 -0000 Received: (qmail 90341 invoked by uid 500); 9 Mar 2006 00:44:02 -0000 Delivered-To: apmail-geronimo-activemq-commits-archive@geronimo.apache.org Received: (qmail 90213 invoked by uid 500); 9 Mar 2006 00:44:01 -0000 Mailing-List: contact activemq-commits-help@geronimo.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: activemq-dev@geronimo.apache.org Delivered-To: mailing list activemq-commits@geronimo.apache.org Received: (qmail 89947 invoked by uid 99); 9 Mar 2006 00:43:58 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 08 Mar 2006 16:43:58 -0800 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Wed, 08 Mar 2006 16:43:46 -0800 Received: (qmail 34395 invoked by uid 65534); 9 Mar 2006 00:43:25 -0000 Message-ID: <20060309004325.34393.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r384390 [5/11] - in /incubator/activemq/trunk: activemq-core/src/gram/java/org/apache/activemq/openwire/tool/ activemq-core/src/gram/script/ activemq-core/src/main/java/org/apache/activemq/command/ activemq-core/src/main/java/org/apache/act... Date: Thu, 09 Mar 2006 00:41:58 -0000 To: activemq-commits@geronimo.apache.org From: chirino@apache.org X-Mailer: svnmailer-1.0.7 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Modified: incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/Commands/XATransactionId.cs URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/Commands/XATransactionId.cs?rev=384390&r1=384389&r2=384390&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/Commands/XATransactionId.cs (original) +++ incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/Commands/XATransactionId.cs Wed Mar 8 16:41:39 2006 @@ -1 +1,105 @@ -/* * Copyright 2006 The Apache Software Foundation or its licensors, as * applicable. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; using System.Collections; using ActiveMQ.OpenWire; using ActiveMQ.Commands; namespace ActiveMQ.Commands { // // Marshalling code for Open Wire Format for XATransactionId // // // NOTE!: This file is autogenerated - do not modify! // if you need to make a change, please see the Groovy scripts in the // activemq-core module // public class XATransactionId : TransactionId, Xid { public const byte ID_XATransactionId = 112; int formatId; byte[] globalTransactionId; byte[] branchQualifier; public override int GetHashCode() { int answer = 0; answer = (answer * 37) + HashCode(FormatId); answer = (answer * 37) + HashCode(GlobalTransactionId); answer = (answer * 37) + HashCode(BranchQualifier); return answer; } public override bool Equals(object that) { if (that is XATransactionId) { return Equals((XATransactionId) that); } return false; } public virtual bool Equals(XATransactionId that) { if (! Equals(this.FormatId, that.FormatId)) return false; if (! Equals(this.GlobalTransactionId, that.GlobalTransactionId)) return false; if (! Equals(this.BranchQualifier, that.BranchQualifier) ) return false; return true; } public override string ToString() { return GetType().Name + "[" + " FormatId=" + FormatId + " GlobalTransactionId=" + GlobalTransactionId + " BranchQualifier=" + BranchQualifier + " ]"; } public override byte GetDataStructureType() { return ID_XATransactionId; } // Properties public int FormatId { get { return formatId; } set { this.formatId = value; } } public byte[] GlobalTransactionId { get { return globalTransactionId; } set { this.globalTransactionId = value; } } public byte[] BranchQualifier { get { return branchQualifier; } set { this.branchQualifier = value; } } } } \ No newline at end of file +/* +* Copyright 2006 The Apache Software Foundation or its licensors, as +* applicable. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +using System; +using System.Collections; + +using ActiveMQ.OpenWire; +using ActiveMQ.Commands; + +namespace ActiveMQ.Commands +{ + // + // Marshalling code for Open Wire Format for XATransactionId + // + // + // NOTE!: This file is autogenerated - do not modify! + // if you need to make a change, please see the Groovy scripts in the + // activemq-core module + // + public class XATransactionId : TransactionId, Xid + { + public const byte ID_XATransactionId = 112; + + int formatId; + byte[] globalTransactionId; + byte[] branchQualifier; + + public override int GetHashCode() { + int answer = 0; + answer = (answer * 37) + HashCode(FormatId); + answer = (answer * 37) + HashCode(GlobalTransactionId); + answer = (answer * 37) + HashCode(BranchQualifier); + return answer; + + } + + + public override bool Equals(object that) { + if (that is XATransactionId) { + return Equals((XATransactionId) that); + } + return false; + } + + public virtual bool Equals(XATransactionId that) { + if (! Equals(this.FormatId, that.FormatId)) return false; + if (! Equals(this.GlobalTransactionId, that.GlobalTransactionId)) return false; + if (! Equals(this.BranchQualifier, that.BranchQualifier)) return false; + return true; + + } + + + public override string ToString() { + return GetType().Name + "[" + + " FormatId=" + FormatId + + " GlobalTransactionId=" + GlobalTransactionId + + " BranchQualifier=" + BranchQualifier + + " ]"; + + } + + + + public override byte GetDataStructureType() { + return ID_XATransactionId; + } + + + // Properties + + public int FormatId + { + get { return formatId; } + set { this.formatId = value; } + } + + public byte[] GlobalTransactionId + { + get { return globalTransactionId; } + set { this.globalTransactionId = value; } + } + + public byte[] BranchQualifier + { + get { return branchQualifier; } + set { this.branchQualifier = value; } + } + + } +} Modified: incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/BaseDataStreamMarshaller.cs URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/BaseDataStreamMarshaller.cs?rev=384390&r1=384389&r2=384390&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/BaseDataStreamMarshaller.cs (original) +++ incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/BaseDataStreamMarshaller.cs Wed Mar 8 16:41:39 2006 @@ -1,750 +1,942 @@ -/* - * Copyright 2006 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -using ActiveMQ.Commands; -using System; -using System.Collections; -using System.IO; -using System.Text; - -namespace ActiveMQ.OpenWire - -{ - /// - /// A base class with useful implementation inheritence methods - /// for creating marshallers of the OpenWire protocol - /// - public abstract class BaseDataStreamMarshaller - { - public const byte NULL = 0; - public const byte BOOLEAN_TYPE = 1; - public const byte BYTE_TYPE = 2; - public const byte CHAR_TYPE = 3; - public const byte SHORT_TYPE = 4; - public const byte INTEGER_TYPE = 5; - public const byte LONG_TYPE = 6; - public const byte DOUBLE_TYPE = 7; - public const byte FLOAT_TYPE = 8; - public const byte STRING_TYPE = 9; - public const byte BYTE_ARRAY_TYPE = 10; - - private static String[] HEX_TABLE = new String[]{ - "00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0a", "0b", "0c", "0d", "0e", "0f", - "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1a", "1b", "1c", "1d", "1e", "1f", - "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2a", "2b", "2c", "2d", "2e", "2f", - "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3a", "3b", "3c", "3d", "3e", "3f", - "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4a", "4b", "4c", "4d", "4e", "4f", - "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5a", "5b", "5c", "5d", "5e", "5f", - "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6a", "6b", "6c", "6d", "6e", "6f", - "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7a", "7b", "7c", "7d", "7e", "7f", - "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8a", "8b", "8c", "8d", "8e", "8f", - "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9a", "9b", "9c", "9d", "9e", "9f", - "a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "aa", "ab", "ac", "ad", "ae", "af", - "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "ba", "bb", "bc", "bd", "be", "bf", - "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "ca", "cb", "cc", "cd", "ce", "cf", - "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "da", "db", "dc", "dd", "de", "df", - "e0", "e1", "e2", "e3", "e4", "e5", "e6", "e7", "e8", "e9", "ea", "eb", "ec", "ed", "ee", "ef", - "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9", "fa", "fb", "fc", "fd", "fe", "ff", - }; - - public abstract DataStructure CreateObject(); - public abstract byte GetDataStructureType(); - - public virtual int TightMarshal1(OpenWireFormat wireFormat, Object o, BooleanStream bs) - { - return 0; - } - public virtual void TightMarshal2( - OpenWireFormat wireFormat, - Object o, - BinaryWriter dataOut, - BooleanStream bs) - { - } - - public virtual void TightUnmarshal( - OpenWireFormat wireFormat, - Object o, - BinaryReader dataIn, - BooleanStream bs) - { - } - - - protected virtual DataStructure TightUnmarshalNestedObject( - OpenWireFormat wireFormat, - BinaryReader dataIn, - BooleanStream bs) - { - return wireFormat.TightUnmarshalNestedObject(dataIn, bs); - } - - protected virtual int TightMarshalNestedObject1( - OpenWireFormat wireFormat, - DataStructure o, - BooleanStream bs) - { - return wireFormat.TightMarshalNestedObject1(o, bs); - } - - protected virtual void TightMarshalNestedObject2( - OpenWireFormat wireFormat, - DataStructure o, - BinaryWriter dataOut, - BooleanStream bs) - { - wireFormat.TightMarshalNestedObject2(o, dataOut, bs); - } - - protected virtual DataStructure TightUnmarshalCachedObject( - OpenWireFormat wireFormat, - BinaryReader dataIn, - BooleanStream bs) - { - /* - if (wireFormat.isCacheEnabled()) { - if (bs.ReadBoolean()) { - short index = dataIndataIn.ReadInt16()Int16(); - DataStructure value = wireFormat.UnmarshalNestedObject(dataIn, bs); - wireFormat.setInUnmarshallCache(index, value); - return value; - } else { - short index = dataIn.ReadInt16(); - return wireFormat.getFromUnmarshallCache(index); - } - } else { - return wireFormat.UnmarshalNestedObject(dataIn, bs); - } - */ - return wireFormat.TightUnmarshalNestedObject(dataIn, bs); - } - - protected virtual int TightMarshalCachedObject1( - OpenWireFormat wireFormat, - DataStructure o, - BooleanStream bs) - { - /* - if (wireFormat.isCacheEnabled()) { - Short index = wireFormat.getMarshallCacheIndex(o); - bs.WriteBoolean(index == null); - if (index == null) { - int rc = wireFormat.Marshal1NestedObject(o, bs); - wireFormat.addToMarshallCache(o); - return 2 + rc; - } else { - return 2; - } - } else { - return wireFormat.Marshal1NestedObject(o, bs); - } - */ - return wireFormat.TightMarshalNestedObject1(o, bs); - } - - protected virtual void TightMarshalCachedObject2( - OpenWireFormat wireFormat, - DataStructure o, - BinaryWriter dataOut, - BooleanStream bs) - { - /* - if (wireFormat.isCacheEnabled()) { - Short index = wireFormat.getMarshallCacheIndex(o); - if (bs.ReadBoolean()) { - dataOut.Write(index.shortValue(), dataOut); - wireFormat.Marshal2NestedObject(o, dataOut, bs); - } else { - dataOut.Write(index.shortValue(), dataOut); - } - } else { - wireFormat.Marshal2NestedObject(o, dataOut, bs); - } - */ - wireFormat.TightMarshalNestedObject2(o, dataOut, bs); - } - - - - protected virtual String TightUnmarshalString(BinaryReader dataIn, BooleanStream bs) - { - if (bs.ReadBoolean()) - { - if (bs.ReadBoolean()) - { - return ReadAsciiString(dataIn); - } - else - { - return dataIn.ReadString(); - } - } - else - { - return null; - } - } - - protected virtual String ReadAsciiString(BinaryReader dataIn) - { - int size = dataIn.ReadInt16(); - byte[] data = new byte[size]; - dataIn.Read(data, 0, size); - char[] text = new char[size]; - for (int i = 0; i < size; i++) - { - text[i] = (char) data[i]; - } - return new String(text); - } - - protected virtual int TightMarshalString1(String value, BooleanStream bs) - { - bs.WriteBoolean(value != null); - if (value != null) - { - int strlen = value.Length; - - int utflen = 0; - int c = 0; - bool isOnlyAscii = true; - char[] charr = value.ToCharArray(); - for (int i = 0; i < strlen; i++) - { - c = charr[i]; - if ((c >= 0x0001) && (c <= 0x007F)) - { - utflen++; - } - else if (c > 0x07FF) - { - utflen += 3; - isOnlyAscii = false; - } - else - { - isOnlyAscii = false; - utflen += 2; - } - } - - if (utflen >= Int16.MaxValue) - throw new IOException("Encountered a String value that is too long to encode."); - - bs.WriteBoolean(isOnlyAscii); - return utflen + 2; - } - else - { - return 0; - } - } - - public static void TightMarshalString2(String value, BinaryWriter dataOut, BooleanStream bs) - { - if (bs.ReadBoolean()) - { - // If we verified it only holds ascii values - if (bs.ReadBoolean()) - { - dataOut.Write((short) value.Length); - // now lets write the bytes - char[] chars = value.ToCharArray(); - for (int i = 0; i < chars.Length; i++) - { - dataOut.Write((byte)(chars[i]&0xFF00>>8)); - } - } - else - { - dataOut.Write(value); - } - } - } - - public virtual int TightMarshalLong1(OpenWireFormat wireFormat, long o, BooleanStream bs) - { - if (o == 0L) - { - bs.WriteBoolean(false); - bs.WriteBoolean(false); - return 0; - } - else - { - ulong ul = (ulong) o; - if ((ul & 0xFFFFFFFFFFFF0000ul) == 0L) - { - bs.WriteBoolean(false); - bs.WriteBoolean(true); - return 2; - } - else if ((ul & 0xFFFFFFFF00000000ul) == 0L) - { - bs.WriteBoolean(true); - bs.WriteBoolean(false); - return 4; - } - else - { - bs.WriteBoolean(true); - bs.WriteBoolean(true); - return 8; - } - } - } - - public virtual void TightMarshalLong2( - OpenWireFormat wireFormat, - long o, - BinaryWriter dataOut, - BooleanStream bs) - { - if (bs.ReadBoolean()) - { - if (bs.ReadBoolean()) - { - dataOut.Write(o); - } - else - { - dataOut.Write((int)o); - } - } - else - { - if (bs.ReadBoolean()) - { - dataOut.Write((short)o); - } - } - } - public virtual long TightUnmarshalLong(OpenWireFormat wireFormat, BinaryReader dataIn, BooleanStream bs) - { - if (bs.ReadBoolean()) - { - if (bs.ReadBoolean()) - { - return dataIn.ReadInt64(); // dataIn.ReadInt64(); - } - else - { - return dataIn.ReadInt32(); - } - } - else - { - if (bs.ReadBoolean()) - { - return dataIn.ReadInt16(); - } - else - { - return 0; - } - } - } - protected virtual int TightMarshalObjectArray1( - OpenWireFormat wireFormat, - DataStructure[] objects, - BooleanStream bs) - { - if (objects != null) - { - int rc = 0; - bs.WriteBoolean(true); - rc += 2; - for (int i = 0; i < objects.Length; i++) - { - rc += TightMarshalNestedObject1(wireFormat, objects[i], bs); - } - return rc; - } - else - { - bs.WriteBoolean(false); - return 0; - } - } - - protected virtual void TightMarshalObjectArray2( - OpenWireFormat wireFormat, - DataStructure[] objects, - BinaryWriter dataOut, - BooleanStream bs) - { - if (bs.ReadBoolean()) - { - dataOut.Write((short) objects.Length); - for (int i = 0; i < objects.Length; i++) - { - TightMarshalNestedObject2(wireFormat, objects[i], dataOut, bs); - } - } - } - - protected virtual byte[] ReadBytes(BinaryReader dataIn, bool flag) - { - if (flag) - { - int size = dataIn.ReadInt32(); - return dataIn.ReadBytes(size); - } - else - { - return null; - } - } - - protected virtual byte[] ReadBytes(BinaryReader dataIn) - { - int size = dataIn.ReadInt32(); - return dataIn.ReadBytes(size); - } - - protected virtual byte[] ReadBytes(BinaryReader dataIn, int size) - { - return dataIn.ReadBytes(size); - } - - protected virtual void WriteBytes(byte[] command, BinaryWriter dataOut) - { - dataOut.Write(command.Length); - dataOut.Write(command); - } - - protected virtual BrokerError TightUnmarshalBrokerError( - OpenWireFormat wireFormat, - BinaryReader dataIn, - BooleanStream bs) - { - if (bs.ReadBoolean()) - { - BrokerError answer = new BrokerError(); - - answer.ExceptionClass = TightUnmarshalString(dataIn, bs); - answer.Message = TightUnmarshalString(dataIn, bs); - if (wireFormat.StackTraceEnabled) - { - short length = dataIn.ReadInt16(); - StackTraceElement[] stackTrace = new StackTraceElement[length]; - for (int i = 0; i < stackTrace.Length; i++) - { - StackTraceElement element = new StackTraceElement(); - element.ClassName = TightUnmarshalString(dataIn, bs); - element.MethodName = TightUnmarshalString(dataIn, bs); - element.FileName = TightUnmarshalString(dataIn, bs); - element.LineNumber = dataIn.ReadInt32(); - stackTrace[i] = element; - } - answer.StackTraceElements = stackTrace; - answer.Cause = TightUnmarshalBrokerError(wireFormat, dataIn, bs); - } - return answer; - } - else - { - return null; - } - } - - protected int TightMarshalBrokerError1(OpenWireFormat wireFormat, BrokerError o, BooleanStream bs) - { - if (o == null) - { - bs.WriteBoolean(false); - return 0; - } - else - { - int rc = 0; - bs.WriteBoolean(true); - rc += TightMarshalString1(o.ExceptionClass, bs); - rc += TightMarshalString1(o.Message, bs); - if (wireFormat.StackTraceEnabled) - { - rc += 2; - StackTraceElement[] stackTrace = o.StackTraceElements; - for (int i = 0; i < stackTrace.Length; i++) - { - StackTraceElement element = stackTrace[i]; - rc += TightMarshalString1(element.ClassName, bs); - rc += TightMarshalString1(element.MethodName, bs); - rc += TightMarshalString1(element.FileName, bs); - rc += 4; - } - rc += TightMarshalBrokerError1(wireFormat, o.Cause, bs); - } - - return rc; - } - } - - protected void TightMarshalBrokerError2( - OpenWireFormat wireFormat, - BrokerError o, - BinaryWriter dataOut, - BooleanStream bs) - { - if (bs.ReadBoolean()) - { - TightMarshalString2(o.ExceptionClass, dataOut, bs); - TightMarshalString2(o.Message, dataOut, bs); - if (wireFormat.StackTraceEnabled) - { - StackTraceElement[] stackTrace = o.StackTraceElements; - dataOut.Write((short) stackTrace.Length); - - for (int i = 0; i < stackTrace.Length; i++) - { - StackTraceElement element = stackTrace[i]; - TightMarshalString2(element.ClassName, dataOut, bs); - TightMarshalString2(element.MethodName, dataOut, bs); - TightMarshalString2(element.FileName, dataOut, bs); - dataOut.Write(element.LineNumber); - } - TightMarshalBrokerError2(wireFormat, o.Cause, dataOut, bs); - } - } - } - - /// - /// Marshals the primitive type map to a byte array - /// - public static byte[] MarshalPrimitiveMap(IDictionary map) - { - if (map == null) - { - return null; - } - else - { - MemoryStream memoryStream = new MemoryStream(); - MarshalPrimitiveMap(map, new OpenWireBinaryWriter(memoryStream)); - return memoryStream.GetBuffer(); - } - } - public static void MarshalPrimitiveMap(IDictionary map, BinaryWriter dataOut) - { - if (map == null) - { - dataOut.Write((int)-1); - } - else - { - dataOut.Write(map.Count); - foreach (DictionaryEntry entry in map) - { - String name = (String) entry.Key; - dataOut.Write(name); - Object value = entry.Value; - MarshalPrimitive(dataOut, value); - } - }} - - - - /// - /// Unmarshals the primitive type map from the given byte array - /// - public static IDictionary UnmarshalPrimitiveMap(byte[] data) - { - if (data == null) - { - return new Hashtable(); - } - else - { - return UnmarshalPrimitiveMap(new OpenWireBinaryReader(new MemoryStream(data))); - } - } - - public static IDictionary UnmarshalPrimitiveMap(BinaryReader dataIn) - { - int size = dataIn.ReadInt32(); - if (size < 0) - { - return null; - } - else - { - IDictionary answer = new Hashtable(size); - for (int i=0; i < size; i++) - { - String name = dataIn.ReadString(); - answer[name] = UnmarshalPrimitive(dataIn); - } - return answer; - } - - } - - public static void MarshalPrimitive(BinaryWriter dataOut, Object value) - { - if (value == null) - { - dataOut.Write(NULL); - } - else if (value is bool) - { - dataOut.Write(BOOLEAN_TYPE); - dataOut.Write((bool) value); - } - else if (value is byte) - { - dataOut.Write(BYTE_TYPE); - dataOut.Write(((Byte)value)); - } - else if (value is char) - { - dataOut.Write(CHAR_TYPE); - dataOut.Write((char) value); - } - else if (value is short) - { - dataOut.Write(SHORT_TYPE); - dataOut.Write((short) value); - } - else if (value is int) - { - dataOut.Write(INTEGER_TYPE); - dataOut.Write((int) value); - } - else if (value is long) - { - dataOut.Write(LONG_TYPE); - dataOut.Write((long) value); - } - else if (value is float) - { - dataOut.Write(FLOAT_TYPE); - dataOut.Write((float) value); - } - else if (value is double) - { - dataOut.Write(DOUBLE_TYPE); - dataOut.Write((double) value); - } - else if (value is byte[]) - { - byte[] data = (byte[]) value; - dataOut.Write(BYTE_ARRAY_TYPE); - dataOut.Write(data.Length); - dataOut.Write(data); - } - else if (value is string) - { - dataOut.Write(STRING_TYPE); - dataOut.Write((string) value); - } - else - { - throw new IOException("Object is not a primitive: " + value); - } - } - - public static Object UnmarshalPrimitive(BinaryReader dataIn) - { - Object value=null; - switch (dataIn.ReadByte()) - { - case BYTE_TYPE: - value = dataIn.ReadByte(); - break; - case BOOLEAN_TYPE: - value = dataIn.ReadBoolean(); - break; - case CHAR_TYPE: - value = dataIn.ReadChar(); - break; - case SHORT_TYPE: - value = dataIn.ReadInt16(); - break; - case INTEGER_TYPE: - value = dataIn.ReadInt32(); - break; - case LONG_TYPE: - value = dataIn.ReadInt64(); - break; - case FLOAT_TYPE: - value = dataIn.ReadSingle(); - break; - case DOUBLE_TYPE: - value = dataIn.ReadDouble(); - break; - case BYTE_ARRAY_TYPE: - int size = dataIn.ReadInt32(); - byte[] data = new byte[size]; - dataIn.Read(data, 0, size); - value = data; - break; - case STRING_TYPE: - value = dataIn.ReadString(); - break; - } - return value; - } - - /// - /// Converts the object to a String - /// - public static string ToString(MessageId id) - { - return ToString(id.ProducerId) + ":" + id.ProducerSequenceId; - } - /// - /// Converts the object to a String - /// - public static string ToString(ProducerId id) - { - return id.ConnectionId + ":" + id.SessionId + ":" + id.Value; - } - - - /// - /// Converts the given transaction ID into a String - /// - public static String ToString(TransactionId txnId) - { - if (txnId is LocalTransactionId) - { - LocalTransactionId ltxnId = (LocalTransactionId) txnId; - return "" + ltxnId.Value; - } - else if (txnId is XATransactionId) - { - XATransactionId xaTxnId = (XATransactionId) txnId; - return "XID:" + xaTxnId.FormatId + ":" + ToHexFromBytes(xaTxnId.GlobalTransactionId) + ":" + ToHexFromBytes(xaTxnId.BranchQualifier); - } - return null; - } - - /// - /// Creates the byte array into hexidecimal - /// - public static String ToHexFromBytes(byte[] data) - { - StringBuilder buffer = new StringBuilder(data.Length * 2); - for (int i = 0; i < data.Length; i++) - { - buffer.Append(HEX_TABLE[0xFF & data[i]]); - } - return buffer.ToString(); - } - - } -} - +/* + * Copyright 2006 The Apache Software Foundation or its licensors, as + * applicable. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +using ActiveMQ.Commands; +using System; +using System.Collections; +using System.IO; +using System.Text; + +namespace ActiveMQ.OpenWire + +{ + /// + /// A base class with useful implementation inheritence methods + /// for creating marshallers of the OpenWire protocol + /// + public abstract class BaseDataStreamMarshaller + { + public const byte NULL = 0; + public const byte BOOLEAN_TYPE = 1; + public const byte BYTE_TYPE = 2; + public const byte CHAR_TYPE = 3; + public const byte SHORT_TYPE = 4; + public const byte INTEGER_TYPE = 5; + public const byte LONG_TYPE = 6; + public const byte DOUBLE_TYPE = 7; + public const byte FLOAT_TYPE = 8; + public const byte STRING_TYPE = 9; + public const byte BYTE_ARRAY_TYPE = 10; + + private static String[] HEX_TABLE = new String[]{ + "00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0a", "0b", "0c", "0d", "0e", "0f", + "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "1a", "1b", "1c", "1d", "1e", "1f", + "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "2a", "2b", "2c", "2d", "2e", "2f", + "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "3a", "3b", "3c", "3d", "3e", "3f", + "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "4a", "4b", "4c", "4d", "4e", "4f", + "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "5a", "5b", "5c", "5d", "5e", "5f", + "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "6a", "6b", "6c", "6d", "6e", "6f", + "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "7a", "7b", "7c", "7d", "7e", "7f", + "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8a", "8b", "8c", "8d", "8e", "8f", + "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "9a", "9b", "9c", "9d", "9e", "9f", + "a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "aa", "ab", "ac", "ad", "ae", "af", + "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "ba", "bb", "bc", "bd", "be", "bf", + "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "ca", "cb", "cc", "cd", "ce", "cf", + "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "da", "db", "dc", "dd", "de", "df", + "e0", "e1", "e2", "e3", "e4", "e5", "e6", "e7", "e8", "e9", "ea", "eb", "ec", "ed", "ee", "ef", + "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9", "fa", "fb", "fc", "fd", "fe", "ff", + }; + + public abstract DataStructure CreateObject(); + public abstract byte GetDataStructureType(); + + public virtual int TightMarshal1(OpenWireFormat wireFormat, Object o, BooleanStream bs) + { + return 0; + } + public virtual void TightMarshal2( + OpenWireFormat wireFormat, + Object o, + BinaryWriter dataOut, + BooleanStream bs) + { + } + + public virtual void TightUnmarshal( + OpenWireFormat wireFormat, + Object o, + BinaryReader dataIn, + BooleanStream bs) + { + } + + + protected virtual DataStructure TightUnmarshalNestedObject( + OpenWireFormat wireFormat, + BinaryReader dataIn, + BooleanStream bs) + { + return wireFormat.TightUnmarshalNestedObject(dataIn, bs); + } + + protected virtual int TightMarshalNestedObject1( + OpenWireFormat wireFormat, + DataStructure o, + BooleanStream bs) + { + return wireFormat.TightMarshalNestedObject1(o, bs); + } + + protected virtual void TightMarshalNestedObject2( + OpenWireFormat wireFormat, + DataStructure o, + BinaryWriter dataOut, + BooleanStream bs) + { + wireFormat.TightMarshalNestedObject2(o, dataOut, bs); + } + + protected virtual DataStructure TightUnmarshalCachedObject( + OpenWireFormat wireFormat, + BinaryReader dataIn, + BooleanStream bs) + { + /* + if (wireFormat.isCacheEnabled()) { + if (bs.ReadBoolean()) { + short index = dataIndataIn.ReadInt16()Int16(); + DataStructure value = wireFormat.UnmarshalNestedObject(dataIn, bs); + wireFormat.setInUnmarshallCache(index, value); + return value; + } else { + short index = dataIn.ReadInt16(); + return wireFormat.getFromUnmarshallCache(index); + } + } else { + return wireFormat.UnmarshalNestedObject(dataIn, bs); + } + */ + return wireFormat.TightUnmarshalNestedObject(dataIn, bs); + } + + protected virtual int TightMarshalCachedObject1( + OpenWireFormat wireFormat, + DataStructure o, + BooleanStream bs) + { + /* + if (wireFormat.isCacheEnabled()) { + Short index = wireFormat.getMarshallCacheIndex(o); + bs.WriteBoolean(index == null); + if (index == null) { + int rc = wireFormat.Marshal1NestedObject(o, bs); + wireFormat.addToMarshallCache(o); + return 2 + rc; + } else { + return 2; + } + } else { + return wireFormat.Marshal1NestedObject(o, bs); + } + */ + return wireFormat.TightMarshalNestedObject1(o, bs); + } + + protected virtual void TightMarshalCachedObject2( + OpenWireFormat wireFormat, + DataStructure o, + BinaryWriter dataOut, + BooleanStream bs) + { + /* + if (wireFormat.isCacheEnabled()) { + Short index = wireFormat.getMarshallCacheIndex(o); + if (bs.ReadBoolean()) { + dataOut.Write(index.shortValue(), dataOut); + wireFormat.Marshal2NestedObject(o, dataOut, bs); + } else { + dataOut.Write(index.shortValue(), dataOut); + } + } else { + wireFormat.Marshal2NestedObject(o, dataOut, bs); + } + */ + wireFormat.TightMarshalNestedObject2(o, dataOut, bs); + } + + + + protected virtual String TightUnmarshalString(BinaryReader dataIn, BooleanStream bs) + { + if (bs.ReadBoolean()) + { + if (bs.ReadBoolean()) + { + return ReadAsciiString(dataIn); + } + else + { + return dataIn.ReadString(); + } + } + else + { + return null; + } + } + + protected virtual int TightMarshalString1(String value, BooleanStream bs) + { + bs.WriteBoolean(value != null); + if (value != null) + { + int strlen = value.Length; + + int utflen = 0; + int c = 0; + bool isOnlyAscii = true; + char[] charr = value.ToCharArray(); + for (int i = 0; i < strlen; i++) + { + c = charr[i]; + if ((c >= 0x0001) && (c <= 0x007F)) + { + utflen++; + } + else if (c > 0x07FF) + { + utflen += 3; + isOnlyAscii = false; + } + else + { + isOnlyAscii = false; + utflen += 2; + } + } + + if (utflen >= Int16.MaxValue) + throw new IOException("Encountered a String value that is too long to encode."); + + bs.WriteBoolean(isOnlyAscii); + return utflen + 2; + } + else + { + return 0; + } + } + + public static void TightMarshalString2(String value, BinaryWriter dataOut, BooleanStream bs) + { + if (bs.ReadBoolean()) + { + // If we verified it only holds ascii values + if (bs.ReadBoolean()) + { + dataOut.Write((short) value.Length); + // now lets write the bytes + char[] chars = value.ToCharArray(); + for (int i = 0; i < chars.Length; i++) + { + dataOut.Write((byte)(chars[i]&0xFF00>>8)); + } + } + else + { + dataOut.Write(value); + } + } + } + + public virtual int TightMarshalLong1(OpenWireFormat wireFormat, long o, BooleanStream bs) + { + if (o == 0L) + { + bs.WriteBoolean(false); + bs.WriteBoolean(false); + return 0; + } + else + { + ulong ul = (ulong) o; + if ((ul & 0xFFFFFFFFFFFF0000ul) == 0L) + { + bs.WriteBoolean(false); + bs.WriteBoolean(true); + return 2; + } + else if ((ul & 0xFFFFFFFF00000000ul) == 0L) + { + bs.WriteBoolean(true); + bs.WriteBoolean(false); + return 4; + } + else + { + bs.WriteBoolean(true); + bs.WriteBoolean(true); + return 8; + } + } + } + + public virtual void TightMarshalLong2( + OpenWireFormat wireFormat, + long o, + BinaryWriter dataOut, + BooleanStream bs) + { + if (bs.ReadBoolean()) + { + if (bs.ReadBoolean()) + { + dataOut.Write(o); + } + else + { + dataOut.Write((int)o); + } + } + else + { + if (bs.ReadBoolean()) + { + dataOut.Write((short)o); + } + } + } + public virtual long TightUnmarshalLong(OpenWireFormat wireFormat, BinaryReader dataIn, BooleanStream bs) + { + if (bs.ReadBoolean()) + { + if (bs.ReadBoolean()) + { + return dataIn.ReadInt64(); // dataIn.ReadInt64(); + } + else + { + return dataIn.ReadInt32(); + } + } + else + { + if (bs.ReadBoolean()) + { + return dataIn.ReadInt16(); + } + else + { + return 0; + } + } + } + protected virtual int TightMarshalObjectArray1( + OpenWireFormat wireFormat, + DataStructure[] objects, + BooleanStream bs) + { + if (objects != null) + { + int rc = 0; + bs.WriteBoolean(true); + rc += 2; + for (int i = 0; i < objects.Length; i++) + { + rc += TightMarshalNestedObject1(wireFormat, objects[i], bs); + } + return rc; + } + else + { + bs.WriteBoolean(false); + return 0; + } + } + + protected virtual void TightMarshalObjectArray2( + OpenWireFormat wireFormat, + DataStructure[] objects, + BinaryWriter dataOut, + BooleanStream bs) + { + if (bs.ReadBoolean()) + { + dataOut.Write((short) objects.Length); + for (int i = 0; i < objects.Length; i++) + { + TightMarshalNestedObject2(wireFormat, objects[i], dataOut, bs); + } + } + } + + + protected virtual BrokerError TightUnmarshalBrokerError( + OpenWireFormat wireFormat, + BinaryReader dataIn, + BooleanStream bs) + { + if (bs.ReadBoolean()) + { + BrokerError answer = new BrokerError(); + + answer.ExceptionClass = TightUnmarshalString(dataIn, bs); + answer.Message = TightUnmarshalString(dataIn, bs); + if (wireFormat.StackTraceEnabled) + { + short length = dataIn.ReadInt16(); + StackTraceElement[] stackTrace = new StackTraceElement[length]; + for (int i = 0; i < stackTrace.Length; i++) + { + StackTraceElement element = new StackTraceElement(); + element.ClassName = TightUnmarshalString(dataIn, bs); + element.MethodName = TightUnmarshalString(dataIn, bs); + element.FileName = TightUnmarshalString(dataIn, bs); + element.LineNumber = dataIn.ReadInt32(); + stackTrace[i] = element; + } + answer.StackTraceElements = stackTrace; + answer.Cause = TightUnmarshalBrokerError(wireFormat, dataIn, bs); + } + return answer; + } + else + { + return null; + } + } + + protected int TightMarshalBrokerError1(OpenWireFormat wireFormat, BrokerError o, BooleanStream bs) + { + if (o == null) + { + bs.WriteBoolean(false); + return 0; + } + else + { + int rc = 0; + bs.WriteBoolean(true); + rc += TightMarshalString1(o.ExceptionClass, bs); + rc += TightMarshalString1(o.Message, bs); + if (wireFormat.StackTraceEnabled) + { + rc += 2; + StackTraceElement[] stackTrace = o.StackTraceElements; + for (int i = 0; i < stackTrace.Length; i++) + { + StackTraceElement element = stackTrace[i]; + rc += TightMarshalString1(element.ClassName, bs); + rc += TightMarshalString1(element.MethodName, bs); + rc += TightMarshalString1(element.FileName, bs); + rc += 4; + } + rc += TightMarshalBrokerError1(wireFormat, o.Cause, bs); + } + + return rc; + } + } + + protected void TightMarshalBrokerError2( + OpenWireFormat wireFormat, + BrokerError o, + BinaryWriter dataOut, + BooleanStream bs) + { + if (bs.ReadBoolean()) + { + TightMarshalString2(o.ExceptionClass, dataOut, bs); + TightMarshalString2(o.Message, dataOut, bs); + if (wireFormat.StackTraceEnabled) + { + StackTraceElement[] stackTrace = o.StackTraceElements; + dataOut.Write((short) stackTrace.Length); + + for (int i = 0; i < stackTrace.Length; i++) + { + StackTraceElement element = stackTrace[i]; + TightMarshalString2(element.ClassName, dataOut, bs); + TightMarshalString2(element.MethodName, dataOut, bs); + TightMarshalString2(element.FileName, dataOut, bs); + dataOut.Write(element.LineNumber); + } + TightMarshalBrokerError2(wireFormat, o.Cause, dataOut, bs); + } + } + } + + + public virtual void LooseMarshal( + OpenWireFormat wireFormat, + Object o, + BinaryWriter dataOut) + { + } + + public virtual void LooseUnmarshal( + OpenWireFormat wireFormat, + Object o, + BinaryReader dataIn) + { + } + + + protected virtual DataStructure LooseUnmarshalNestedObject( + OpenWireFormat wireFormat, + BinaryReader dataIn) + { + return wireFormat.LooseUnmarshalNestedObject(dataIn); + } + + protected virtual void LooseMarshalNestedObject( + OpenWireFormat wireFormat, + DataStructure o, + BinaryWriter dataOut) + { + wireFormat.LooseMarshalNestedObject(o, dataOut); + } + + protected virtual DataStructure LooseUnmarshalCachedObject( + OpenWireFormat wireFormat, + BinaryReader dataIn) + { + /* + if (wireFormat.isCacheEnabled()) { + if (bs.ReadBoolean()) { + short index = dataIndataIn.ReadInt16()Int16(); + DataStructure value = wireFormat.UnmarshalNestedObject(dataIn, bs); + wireFormat.setInUnmarshallCache(index, value); + return value; + } else { + short index = dataIn.ReadInt16(); + return wireFormat.getFromUnmarshallCache(index); + } + } else { + return wireFormat.UnmarshalNestedObject(dataIn, bs); + } + */ + return wireFormat.LooseUnmarshalNestedObject(dataIn); + } + + + protected virtual void LooseMarshalCachedObject( + OpenWireFormat wireFormat, + DataStructure o, + BinaryWriter dataOut) + { + /* + if (wireFormat.isCacheEnabled()) { + Short index = wireFormat.getMarshallCacheIndex(o); + if (bs.ReadBoolean()) { + dataOut.Write(index.shortValue(), dataOut); + wireFormat.Marshal2NestedObject(o, dataOut, bs); + } else { + dataOut.Write(index.shortValue(), dataOut); + } + } else { + wireFormat.Marshal2NestedObject(o, dataOut, bs); + } + */ + wireFormat.LooseMarshalNestedObject(o, dataOut); + } + + + + protected virtual String LooseUnmarshalString(BinaryReader dataIn) + { + if (dataIn.ReadBoolean()) + { + return dataIn.ReadString(); + } + else + { + return null; + } + } + + + public static void LooseMarshalString(String value, BinaryWriter dataOut) + { + dataOut.Write(value != null); + if (value != null) + { + dataOut.Write(value); + } + } + + public virtual void LooseMarshalLong( + OpenWireFormat wireFormat, + long o, + BinaryWriter dataOut) + { + dataOut.Write(o); + } + + public virtual long LooseUnmarshalLong(OpenWireFormat wireFormat, BinaryReader dataIn) + { + return dataIn.ReadInt64(); + } + + protected virtual void LooseMarshalObjectArray( + OpenWireFormat wireFormat, + DataStructure[] objects, + BinaryWriter dataOut) + { + dataOut.Write(objects!=null); + if (objects!=null) + { + dataOut.Write((short) objects.Length); + for (int i = 0; i < objects.Length; i++) + { + LooseMarshalNestedObject(wireFormat, objects[i], dataOut); + } + } + } + + protected virtual BrokerError LooseUnmarshalBrokerError( + OpenWireFormat wireFormat, + BinaryReader dataIn) + { + if (dataIn.ReadBoolean()) + { + BrokerError answer = new BrokerError(); + + answer.ExceptionClass = LooseUnmarshalString(dataIn); + answer.Message = LooseUnmarshalString(dataIn); + if (wireFormat.StackTraceEnabled) + { + short length = dataIn.ReadInt16(); + StackTraceElement[] stackTrace = new StackTraceElement[length]; + for (int i = 0; i < stackTrace.Length; i++) + { + StackTraceElement element = new StackTraceElement(); + element.ClassName = LooseUnmarshalString(dataIn); + element.MethodName = LooseUnmarshalString(dataIn); + element.FileName = LooseUnmarshalString(dataIn); + element.LineNumber = dataIn.ReadInt32(); + stackTrace[i] = element; + } + answer.StackTraceElements = stackTrace; + answer.Cause = LooseUnmarshalBrokerError(wireFormat, dataIn); + } + return answer; + } + else + { + return null; + } + } + + protected void LooseMarshalBrokerError( + OpenWireFormat wireFormat, + BrokerError o, + BinaryWriter dataOut) + { + dataOut.Write(o!=null); + if (o!=null) + { + LooseMarshalString(o.ExceptionClass, dataOut); + LooseMarshalString(o.Message, dataOut); + if (wireFormat.StackTraceEnabled) + { + StackTraceElement[] stackTrace = o.StackTraceElements; + dataOut.Write((short) stackTrace.Length); + + for (int i = 0; i < stackTrace.Length; i++) + { + StackTraceElement element = stackTrace[i]; + LooseMarshalString(element.ClassName, dataOut); + LooseMarshalString(element.MethodName, dataOut); + LooseMarshalString(element.FileName, dataOut); + dataOut.Write(element.LineNumber); + } + LooseMarshalBrokerError(wireFormat, o.Cause, dataOut); + } + } + } + + protected virtual byte[] ReadBytes(BinaryReader dataIn, bool flag) + { + if (flag) + { + int size = dataIn.ReadInt32(); + return dataIn.ReadBytes(size); + } + else + { + return null; + } + } + + protected virtual byte[] ReadBytes(BinaryReader dataIn) + { + int size = dataIn.ReadInt32(); + return dataIn.ReadBytes(size); + } + + protected virtual byte[] ReadBytes(BinaryReader dataIn, int size) + { + return dataIn.ReadBytes(size); + } + + protected virtual void WriteBytes(byte[] command, BinaryWriter dataOut) + { + dataOut.Write(command.Length); + dataOut.Write(command); + } + + protected virtual String ReadAsciiString(BinaryReader dataIn) + { + int size = dataIn.ReadInt16(); + byte[] data = new byte[size]; + dataIn.Read(data, 0, size); + char[] text = new char[size]; + for (int i = 0; i < size; i++) + { + text[i] = (char) data[i]; + } + return new String(text); + } + + + /// + /// Marshals the primitive type map to a byte array + /// + public static byte[] MarshalPrimitiveMap(IDictionary map) + { + if (map == null) + { + return null; + } + else + { + MemoryStream memoryStream = new MemoryStream(); + MarshalPrimitiveMap(map, new OpenWireBinaryWriter(memoryStream)); + return memoryStream.GetBuffer(); + } + } + public static void MarshalPrimitiveMap(IDictionary map, BinaryWriter dataOut) + { + if (map == null) + { + dataOut.Write((int)-1); + } + else + { + dataOut.Write(map.Count); + foreach (DictionaryEntry entry in map) + { + String name = (String) entry.Key; + dataOut.Write(name); + Object value = entry.Value; + MarshalPrimitive(dataOut, value); + } + }} + + + + /// + /// Unmarshals the primitive type map from the given byte array + /// + public static IDictionary UnmarshalPrimitiveMap(byte[] data) + { + if (data == null) + { + return new Hashtable(); + } + else + { + return UnmarshalPrimitiveMap(new OpenWireBinaryReader(new MemoryStream(data))); + } + } + + public static IDictionary UnmarshalPrimitiveMap(BinaryReader dataIn) + { + int size = dataIn.ReadInt32(); + if (size < 0) + { + return null; + } + else + { + IDictionary answer = new Hashtable(size); + for (int i=0; i < size; i++) + { + String name = dataIn.ReadString(); + answer[name] = UnmarshalPrimitive(dataIn); + } + return answer; + } + + } + + public static void MarshalPrimitive(BinaryWriter dataOut, Object value) + { + if (value == null) + { + dataOut.Write(NULL); + } + else if (value is bool) + { + dataOut.Write(BOOLEAN_TYPE); + dataOut.Write((bool) value); + } + else if (value is byte) + { + dataOut.Write(BYTE_TYPE); + dataOut.Write(((Byte)value)); + } + else if (value is char) + { + dataOut.Write(CHAR_TYPE); + dataOut.Write((char) value); + } + else if (value is short) + { + dataOut.Write(SHORT_TYPE); + dataOut.Write((short) value); + } + else if (value is int) + { + dataOut.Write(INTEGER_TYPE); + dataOut.Write((int) value); + } + else if (value is long) + { + dataOut.Write(LONG_TYPE); + dataOut.Write((long) value); + } + else if (value is float) + { + dataOut.Write(FLOAT_TYPE); + dataOut.Write((float) value); + } + else if (value is double) + { + dataOut.Write(DOUBLE_TYPE); + dataOut.Write((double) value); + } + else if (value is byte[]) + { + byte[] data = (byte[]) value; + dataOut.Write(BYTE_ARRAY_TYPE); + dataOut.Write(data.Length); + dataOut.Write(data); + } + else if (value is string) + { + dataOut.Write(STRING_TYPE); + dataOut.Write((string) value); + } + else + { + throw new IOException("Object is not a primitive: " + value); + } + } + + public static Object UnmarshalPrimitive(BinaryReader dataIn) + { + Object value=null; + switch (dataIn.ReadByte()) + { + case BYTE_TYPE: + value = dataIn.ReadByte(); + break; + case BOOLEAN_TYPE: + value = dataIn.ReadBoolean(); + break; + case CHAR_TYPE: + value = dataIn.ReadChar(); + break; + case SHORT_TYPE: + value = dataIn.ReadInt16(); + break; + case INTEGER_TYPE: + value = dataIn.ReadInt32(); + break; + case LONG_TYPE: + value = dataIn.ReadInt64(); + break; + case FLOAT_TYPE: + value = dataIn.ReadSingle(); + break; + case DOUBLE_TYPE: + value = dataIn.ReadDouble(); + break; + case BYTE_ARRAY_TYPE: + int size = dataIn.ReadInt32(); + byte[] data = new byte[size]; + dataIn.Read(data, 0, size); + value = data; + break; + case STRING_TYPE: + value = dataIn.ReadString(); + break; + } + return value; + } + + /// + /// Converts the object to a String + /// + public static string ToString(MessageId id) + { + return ToString(id.ProducerId) + ":" + id.ProducerSequenceId; + } + /// + /// Converts the object to a String + /// + public static string ToString(ProducerId id) + { + return id.ConnectionId + ":" + id.SessionId + ":" + id.Value; + } + + + /// + /// Converts the given transaction ID into a String + /// + public static String ToString(TransactionId txnId) + { + if (txnId is LocalTransactionId) + { + LocalTransactionId ltxnId = (LocalTransactionId) txnId; + return "" + ltxnId.Value; + } + else if (txnId is XATransactionId) + { + XATransactionId xaTxnId = (XATransactionId) txnId; + return "XID:" + xaTxnId.FormatId + ":" + ToHexFromBytes(xaTxnId.GlobalTransactionId) + ":" + ToHexFromBytes(xaTxnId.BranchQualifier); + } + return null; + } + + /// + /// Creates the byte array into hexidecimal + /// + public static String ToHexFromBytes(byte[] data) + { + StringBuilder buffer = new StringBuilder(data.Length * 2); + for (int i = 0; i < data.Length; i++) + { + buffer.Append(HEX_TABLE[0xFF & data[i]]); + } + return buffer.ToString(); + } + + } +} + Modified: incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/OpenWireFormat.cs URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/OpenWireFormat.cs?rev=384390&r1=384389&r2=384390&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/OpenWireFormat.cs (original) +++ incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/OpenWireFormat.cs Wed Mar 8 16:41:39 2006 @@ -26,37 +26,37 @@ /// public class OpenWireFormat { - static private char[] MAGIC = new char[] { 'A', 'c', 't', 'i', 'v', 'e', 'M', 'Q' }; private BaseDataStreamMarshaller[] dataMarshallers; private const byte NULL_TYPE = 0; - private WireFormatInfo wireFormatInfo = new WireFormatInfo(); - + + private int version=1; + private bool stackTraceEnabled=false; + private bool tightEncodingEnabled=false; + private bool sizePrefixDisabled=false; + public OpenWireFormat() { - // lets configure the wire format - wireFormatInfo.Magic = CreateMagicBytes(); - wireFormatInfo.Version = 1; - wireFormatInfo.StackTraceEnabled = true; - wireFormatInfo.TcpNoDelayEnabled = true; - wireFormatInfo.PrefixPacketSize = true; - wireFormatInfo.TightEncodingEnabled = true; - dataMarshallers = new BaseDataStreamMarshaller[256]; MarshallerFactory factory = new MarshallerFactory(); factory.configure(this); } - - public WireFormatInfo WireFormatInfo { - get { - return wireFormatInfo; - } - } - + public bool StackTraceEnabled { - get { - return wireFormatInfo.StackTraceEnabled; - } + get { return stackTraceEnabled; } + set { stackTraceEnabled = value; } + } + public int Version { + get { return version; } + set { version = value; } + } + public bool SizePrefixDisabled { + get { return sizePrefixDisabled; } + set { sizePrefixDisabled = value; } + } + public bool TightEncodingEnabled { + get { return tightEncodingEnabled; } + set { tightEncodingEnabled = value; } } public void addMarshaller(BaseDataStreamMarshaller marshaller) @@ -75,15 +75,42 @@ BaseDataStreamMarshaller dsm = dataMarshallers[type & 0xFF]; if (dsm == null) throw new IOException("Unknown data type: " + type); - - BooleanStream bs = new BooleanStream(); - size += dsm.TightMarshal1(this, c, bs); - size += bs.MarshalledSize(); - - ds.Write(size); - ds.Write(type); - bs.Marshal(ds); - dsm.TightMarshal2(this, c, ds, bs); + + if(tightEncodingEnabled) { + + BooleanStream bs = new BooleanStream(); + size += dsm.TightMarshal1(this, c, bs); + size += bs.MarshalledSize(); + + if( !sizePrefixDisabled ) { + ds.Write(size); + } + + ds.Write(type); + bs.Marshal(ds); + dsm.TightMarshal2(this, c, ds, bs); + + } else { + + BinaryWriter looseOut = ds; + MemoryStream ms = null; + // If we are prefixing then we need to first write it to memory, + // otherwise we can write direct to the stream. + if( !sizePrefixDisabled ) { + ms= new MemoryStream(); + looseOut = new OpenWireBinaryWriter(ms); + looseOut.Write(size); + } + + looseOut.Write(type); + dsm.LooseMarshal(this, c, looseOut); + + if( !sizePrefixDisabled ) { + ms.Position=0; + looseOut.Write( (int)ms.Length-4 ); + ds.Write(ms.GetBuffer(), 0, (int)ms.Length); + } + } } else { @@ -95,7 +122,9 @@ public Object Unmarshal(BinaryReader dis) { // lets ignore the size of the packet - dis.ReadInt32(); + if( !sizePrefixDisabled ) { + dis.ReadInt32(); + } // first byte is the type of the packet byte dataType = dis.ReadByte(); @@ -106,10 +135,16 @@ throw new IOException("Unknown data type: " + dataType); //Console.WriteLine("Parsing type: " + dataType + " with: " + dsm); Object data = dsm.CreateObject(); - BooleanStream bs = new BooleanStream(); - bs.Unmarshal(dis); - dsm.TightUnmarshal(this, data, dis, bs); - return data; + + if(tightEncodingEnabled) { + BooleanStream bs = new BooleanStream(); + bs.Unmarshal(dis); + dsm.TightUnmarshal(this, data, dis, bs); + return data; + } else { + dsm.LooseUnmarshal(this, data, dis); + return data; + } } else { @@ -205,18 +240,40 @@ return null; } } + + - /// - /// Method CreateMagicBytes - /// - private byte[] CreateMagicBytes() + public void LooseMarshalNestedObject(DataStructure o, BinaryWriter dataOut) { - byte[] answer = new byte[MAGIC.Length]; - for (int i = 0; i < answer.Length; i++) + dataOut.Write(o!=null); + if( o!=null ) { + byte type = o.GetDataStructureType(); + dataOut.Write(type); + BaseDataStreamMarshaller dsm = (BaseDataStreamMarshaller) dataMarshallers[type & 0xFF]; + if( dsm == null ) + throw new IOException("Unknown data type: "+type); + dsm.LooseMarshal(this, o, dataOut); + } + } + + public DataStructure LooseUnmarshalNestedObject(BinaryReader dis) + { + if (dis.ReadBoolean()) + { + + byte dataType = dis.ReadByte(); + BaseDataStreamMarshaller dsm = (BaseDataStreamMarshaller) dataMarshallers[dataType & 0xFF]; + if (dsm == null) + throw new IOException("Unknown data type: " + dataType); + DataStructure data = dsm.CreateObject(); + dsm.LooseUnmarshal(this, data, dis); + return data; + } + else { - answer[i] = (byte) MAGIC[i]; + return null; } - return answer; } + } } Modified: incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQBytesMessageMarshaller.cs URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQBytesMessageMarshaller.cs?rev=384390&r1=384389&r2=384390&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQBytesMessageMarshaller.cs (original) +++ incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQBytesMessageMarshaller.cs Wed Mar 8 16:41:39 2006 @@ -56,7 +56,6 @@ } - // // Write the booleans that this object uses to a BooleanStream // @@ -75,5 +74,24 @@ base.TightMarshal2(wireFormat, o, dataOut, bs); } + + // + // Un-marshal an object instance from the data input stream + // + public override void LooseUnmarshal(OpenWireFormat wireFormat, Object o, BinaryReader dataIn) + { + base.LooseUnmarshal(wireFormat, o, dataIn); + + } + + // + // Write a object instance to data output stream + // + public override void LooseMarshal(OpenWireFormat wireFormat, Object o, BinaryWriter dataOut) { + + base.LooseMarshal(wireFormat, o, dataOut); + + } + } } Modified: incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQDestinationMarshaller.cs URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQDestinationMarshaller.cs?rev=384390&r1=384389&r2=384390&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQDestinationMarshaller.cs (original) +++ incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQDestinationMarshaller.cs Wed Mar 8 16:41:39 2006 @@ -48,7 +48,6 @@ } - // // Write the booleans that this object uses to a BooleanStream // @@ -71,5 +70,30 @@ TightMarshalString2(info.PhysicalName, dataOut, bs); } + + // + // Un-marshal an object instance from the data input stream + // + public override void LooseUnmarshal(OpenWireFormat wireFormat, Object o, BinaryReader dataIn) + { + base.LooseUnmarshal(wireFormat, o, dataIn); + + ActiveMQDestination info = (ActiveMQDestination)o; + info.PhysicalName = LooseUnmarshalString(dataIn); + + } + + // + // Write a object instance to data output stream + // + public override void LooseMarshal(OpenWireFormat wireFormat, Object o, BinaryWriter dataOut) { + + ActiveMQDestination info = (ActiveMQDestination)o; + + base.LooseMarshal(wireFormat, o, dataOut); + LooseMarshalString(info.PhysicalName, dataOut); + + } + } } Modified: incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQMapMessageMarshaller.cs URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQMapMessageMarshaller.cs?rev=384390&r1=384389&r2=384390&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQMapMessageMarshaller.cs (original) +++ incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQMapMessageMarshaller.cs Wed Mar 8 16:41:39 2006 @@ -56,7 +56,6 @@ } - // // Write the booleans that this object uses to a BooleanStream // @@ -75,5 +74,24 @@ base.TightMarshal2(wireFormat, o, dataOut, bs); } + + // + // Un-marshal an object instance from the data input stream + // + public override void LooseUnmarshal(OpenWireFormat wireFormat, Object o, BinaryReader dataIn) + { + base.LooseUnmarshal(wireFormat, o, dataIn); + + } + + // + // Write a object instance to data output stream + // + public override void LooseMarshal(OpenWireFormat wireFormat, Object o, BinaryWriter dataOut) { + + base.LooseMarshal(wireFormat, o, dataOut); + + } + } } Modified: incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQMessageMarshaller.cs URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQMessageMarshaller.cs?rev=384390&r1=384389&r2=384390&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQMessageMarshaller.cs (original) +++ incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQMessageMarshaller.cs Wed Mar 8 16:41:39 2006 @@ -63,7 +63,6 @@ } - // // Write the booleans that this object uses to a BooleanStream // @@ -88,5 +87,37 @@ info.AfterMarshall(wireFormat); } + + // + // Un-marshal an object instance from the data input stream + // + public override void LooseUnmarshal(OpenWireFormat wireFormat, Object o, BinaryReader dataIn) + { + base.LooseUnmarshal(wireFormat, o, dataIn); + + ActiveMQMessage info = (ActiveMQMessage)o; + + info.BeforeUnmarshall(wireFormat); + + + info.AfterUnmarshall(wireFormat); + + } + + // + // Write a object instance to data output stream + // + public override void LooseMarshal(OpenWireFormat wireFormat, Object o, BinaryWriter dataOut) { + + ActiveMQMessage info = (ActiveMQMessage)o; + + info.BeforeMarshall(wireFormat); + + base.LooseMarshal(wireFormat, o, dataOut); + + info.AfterMarshall(wireFormat); + + } + } } Modified: incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQObjectMessageMarshaller.cs URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQObjectMessageMarshaller.cs?rev=384390&r1=384389&r2=384390&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQObjectMessageMarshaller.cs (original) +++ incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQObjectMessageMarshaller.cs Wed Mar 8 16:41:39 2006 @@ -56,7 +56,6 @@ } - // // Write the booleans that this object uses to a BooleanStream // @@ -75,5 +74,24 @@ base.TightMarshal2(wireFormat, o, dataOut, bs); } + + // + // Un-marshal an object instance from the data input stream + // + public override void LooseUnmarshal(OpenWireFormat wireFormat, Object o, BinaryReader dataIn) + { + base.LooseUnmarshal(wireFormat, o, dataIn); + + } + + // + // Write a object instance to data output stream + // + public override void LooseMarshal(OpenWireFormat wireFormat, Object o, BinaryWriter dataOut) { + + base.LooseMarshal(wireFormat, o, dataOut); + + } + } } Modified: incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQQueueMarshaller.cs URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQQueueMarshaller.cs?rev=384390&r1=384389&r2=384390&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQQueueMarshaller.cs (original) +++ incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQQueueMarshaller.cs Wed Mar 8 16:41:39 2006 @@ -56,7 +56,6 @@ } - // // Write the booleans that this object uses to a BooleanStream // @@ -75,5 +74,24 @@ base.TightMarshal2(wireFormat, o, dataOut, bs); } + + // + // Un-marshal an object instance from the data input stream + // + public override void LooseUnmarshal(OpenWireFormat wireFormat, Object o, BinaryReader dataIn) + { + base.LooseUnmarshal(wireFormat, o, dataIn); + + } + + // + // Write a object instance to data output stream + // + public override void LooseMarshal(OpenWireFormat wireFormat, Object o, BinaryWriter dataOut) { + + base.LooseMarshal(wireFormat, o, dataOut); + + } + } } Modified: incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQStreamMessageMarshaller.cs URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQStreamMessageMarshaller.cs?rev=384390&r1=384389&r2=384390&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQStreamMessageMarshaller.cs (original) +++ incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQStreamMessageMarshaller.cs Wed Mar 8 16:41:39 2006 @@ -56,7 +56,6 @@ } - // // Write the booleans that this object uses to a BooleanStream // @@ -75,5 +74,24 @@ base.TightMarshal2(wireFormat, o, dataOut, bs); } + + // + // Un-marshal an object instance from the data input stream + // + public override void LooseUnmarshal(OpenWireFormat wireFormat, Object o, BinaryReader dataIn) + { + base.LooseUnmarshal(wireFormat, o, dataIn); + + } + + // + // Write a object instance to data output stream + // + public override void LooseMarshal(OpenWireFormat wireFormat, Object o, BinaryWriter dataOut) { + + base.LooseMarshal(wireFormat, o, dataOut); + + } + } } Modified: incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQTempDestinationMarshaller.cs URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQTempDestinationMarshaller.cs?rev=384390&r1=384389&r2=384390&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQTempDestinationMarshaller.cs (original) +++ incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQTempDestinationMarshaller.cs Wed Mar 8 16:41:39 2006 @@ -45,7 +45,6 @@ } - // // Write the booleans that this object uses to a BooleanStream // @@ -64,5 +63,24 @@ base.TightMarshal2(wireFormat, o, dataOut, bs); } + + // + // Un-marshal an object instance from the data input stream + // + public override void LooseUnmarshal(OpenWireFormat wireFormat, Object o, BinaryReader dataIn) + { + base.LooseUnmarshal(wireFormat, o, dataIn); + + } + + // + // Write a object instance to data output stream + // + public override void LooseMarshal(OpenWireFormat wireFormat, Object o, BinaryWriter dataOut) { + + base.LooseMarshal(wireFormat, o, dataOut); + + } + } } Modified: incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQTempQueueMarshaller.cs URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQTempQueueMarshaller.cs?rev=384390&r1=384389&r2=384390&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQTempQueueMarshaller.cs (original) +++ incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQTempQueueMarshaller.cs Wed Mar 8 16:41:39 2006 @@ -56,7 +56,6 @@ } - // // Write the booleans that this object uses to a BooleanStream // @@ -75,5 +74,24 @@ base.TightMarshal2(wireFormat, o, dataOut, bs); } + + // + // Un-marshal an object instance from the data input stream + // + public override void LooseUnmarshal(OpenWireFormat wireFormat, Object o, BinaryReader dataIn) + { + base.LooseUnmarshal(wireFormat, o, dataIn); + + } + + // + // Write a object instance to data output stream + // + public override void LooseMarshal(OpenWireFormat wireFormat, Object o, BinaryWriter dataOut) { + + base.LooseMarshal(wireFormat, o, dataOut); + + } + } } Modified: incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQTempTopicMarshaller.cs URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQTempTopicMarshaller.cs?rev=384390&r1=384389&r2=384390&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQTempTopicMarshaller.cs (original) +++ incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQTempTopicMarshaller.cs Wed Mar 8 16:41:39 2006 @@ -56,7 +56,6 @@ } - // // Write the booleans that this object uses to a BooleanStream // @@ -75,5 +74,24 @@ base.TightMarshal2(wireFormat, o, dataOut, bs); } + + // + // Un-marshal an object instance from the data input stream + // + public override void LooseUnmarshal(OpenWireFormat wireFormat, Object o, BinaryReader dataIn) + { + base.LooseUnmarshal(wireFormat, o, dataIn); + + } + + // + // Write a object instance to data output stream + // + public override void LooseMarshal(OpenWireFormat wireFormat, Object o, BinaryWriter dataOut) { + + base.LooseMarshal(wireFormat, o, dataOut); + + } + } } Modified: incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQTextMessageMarshaller.cs URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQTextMessageMarshaller.cs?rev=384390&r1=384389&r2=384390&view=diff ============================================================================== --- incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQTextMessageMarshaller.cs (original) +++ incubator/activemq/trunk/activemq-dotnet/src/main/csharp/ActiveMQ/OpenWire/V1/ActiveMQTextMessageMarshaller.cs Wed Mar 8 16:41:39 2006 @@ -56,7 +56,6 @@ } - // // Write the booleans that this object uses to a BooleanStream // @@ -75,5 +74,24 @@ base.TightMarshal2(wireFormat, o, dataOut, bs); } + + // + // Un-marshal an object instance from the data input stream + // + public override void LooseUnmarshal(OpenWireFormat wireFormat, Object o, BinaryReader dataIn) + { + base.LooseUnmarshal(wireFormat, o, dataIn); + + } + + // + // Write a object instance to data output stream + // + public override void LooseMarshal(OpenWireFormat wireFormat, Object o, BinaryWriter dataOut) { + + base.LooseMarshal(wireFormat, o, dataOut); + + } + } }