Hi Steve,

I would be happy to apply your patch but could you open a JIRA issue at:
http://issues.apache.org/activemq/browse/AMQ

And attach your patch to that so that we have it properly documented
that you want to contribute your patch to the ASF.

Thanks!
Hiram

On 1/10/07, rousseau <[EMAIL PROTECTED]> wrote:

I've found a byte-order problem sending a double from Java ActiveMQ to a
NMS/CSharp receiver:

(NMS) ActiveMQ.OpenWire.OpenWireBinaryReader has no definition for
ReadDouble(), and by default calls the MS .NET BinaryReader.ReadDouble()
which reads the bytes in the wrong order. Here is the fix:

add a new method to OpenWireBinaryReader.cs:

        public override double ReadDouble()
        {
            return EndianSupport.SwitchEndian(base.ReadBytes(8));
        }

add a new method to EndianSupport.cs:

        public static double SwitchEndian(byte[] bytes)
        {
            //Reverse byte array
            byte[] reverse = new byte[8];
            reverse[0] = bytes[7];
            reverse[1] = bytes[6];
            reverse[2] = bytes[5];
            reverse[3] = bytes[4];
            reverse[4] = bytes[3];
            reverse[5] = bytes[2];
            reverse[6] = bytes[1];
            reverse[7] = bytes[0];
            BinaryReader br = new BinaryReader(new MemoryStream(reverse));
            return br.ReadDouble();
        }

If anyone knows a cleaner way of doing this, please let me know.

thx
/Steve
--
View this message in context: 
http://www.nabble.com/NMS-byte-order-for-doubles-tf2951266.html#a8253895
Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.




--
Regards,
Hiram

Blog: http://hiramchirino.com

Reply via email to