Andrew Stitcher created QPID-5489:
-------------------------------------
Summary: C++ Uuid code needs cleaning up
Key: QPID-5489
URL: https://issues.apache.org/jira/browse/QPID-5489
Project: Qpid
Issue Type: Improvement
Components: C++ Broker, C++ Clustering
Environment: FreeBSD
Reporter: Andrew Stitcher
Assignee: Andrew Stitcher
Priority: Minor
The Uuid encapsulating code is a bit of a mess in qpid:
There are 2 nearly parallel implementations with only minor differences -
qpid::framing::Uuid and qpid::types::Uuid. The reason for this historical with
types::Uuids being written to supplant framing::Uuid to avoid its pernicious
dependencies.
However at this point the framing version is not widely used and can be mostly
removed in favour of the types version.
Added to this is an issue in the FreeBSD port: This has a uuid_compare()
function actually implemented in libc - in addition to the one in libuuid. The
two are incompatible. However the version in libc seems to be used
preferentially even if libuuid is linked in - I'm not sure why.
So it would be a good idea to just avoid uuid_compare completely. Fortunately
we can in fact do this - we hold uuids in memory in the same order that they
appear on the wire (for easy receiving and sending) in this case the
uuid_compare is actually exactly the same as doing a memcmp() over the raw
bytes.
It turns out that once you have done this the only library calls that we are
left meeding are uuid_generate(), uuid_parse() & uuid_unparse(). And _parse and
_unparse would be very simple to replace because they just read/write the bytes
in the order that we keep them in memory and add/remove '-' characters in the
correct place.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]