Alan Conway wrote:
I believe C++ is encoding UUIDs correctly as 16 byte values.

I've got a fix so that the python client will as well. There are a couple of test failures when switching over to use session_open which I will look into then check in.

As soon as python encoding is fixed we can do a real interop test. Does
Java depend on this incorrect encoding? If so it also needs to be fixed
before C++ can switch to the preview XML.

Couple of issues on java-c++ interop:

The java method types are now based on one octet each for method and class id, though they still seem to be encoded & decoded as 32 bits combined.

I changed the c++ to use a single byte each. This did require me to alter the method indexes on message.empty and message.offset and the class index on the cluster class as the original values were too large. (I assume we will have a wholesale reallocation of ids now we have moved to the smaller id sizes as the ids are used rather unsparingly!)

After altering the java client to encode/decode the methods encoded type field as a short) it could correctly read in the connection.start frame and send out a connection.start-ok.

The broker never manages to read this however. I'm still investigating the cause, but it looks like the frame doesn't contain a value for the response (not even an empty long string) or else is encoding field tables and long strings with just a 16 bit size (values for both being empty). There also doesn't appear to be an end-of-frame marker(?).

I could be wrong on all counts and will pursue this a bit further. Consider this an invitation to share any insights you have though!

Reply via email to