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]

Reply via email to