On 07/30/2010 01:07 AM, Steve Huston wrote:
I'm updating the Wireshark AMQP dissector to understand AMQP 0-10 and
using Qpid C++ as the test for it. I am confused about one section of
the spec and would like some clarification please.

The Session class has a session.header domain that says: "The session
header appears on commands after the class and command id, but prior to
command arguments." It's a 1-byte header. The session.header domain
isn't mentioned anywhere else I can find

It is also referenced in the diagram in section 5.8 of the main document, entitled Commands but it just states the same thing in pictorial form.

and it doesn't appear in
Qpid-originated Session assemblies.

I believe that the header is indeed present on the wire as expected for commands (after the class and command id, before the command arguments). I re-checked with c++ but it must be there for Java and python as well.

The header is a sized struct so has one octet for a byte count, it is also packed and has another byte for the flags and the only field in it is the sync flag which represented solely in the packing flags. The valid values in practice are therefore 01 00 (sync flag not set) and 01 01 (sync flag set).

In the c++ codebase there is a generated class <build-dir>/src/qpid/framing/Header.h and this is used in <src-dir>/src/qpid/framing/ModelMethod.h which is the super class of all 'method body' classes representing commands.

If I ignore that statement that the
header appears after the class/command and before the arguments, the
assemblies dissect ok. Can someone interpret what that part of the spec
is saying?

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to