Kim van der Riet created PROTON-1498:
----------------------------------------

             Summary: [C++ binding] Message annotation_map works as value, but 
not as ref
                 Key: PROTON-1498
                 URL: https://issues.apache.org/jira/browse/PROTON-1498
             Project: Qpid Proton
          Issue Type: Bug
          Components: cpp-binding
            Reporter: Kim van der Riet
            Assignee: Cliff Jansen


When fetching a known message annotation from a message {{msg}} which has type 
{{uint8_t}}, the following call fails:
{code}
uint8_t t = 
msg.message_annotations().get(proton::symbol("x-opt-jms-msg-type")).get<int8_t>();
{code}
with {{proton::conversion_error}} "no more data".

It appears that if the {{annotation_map}} is used as a reference rather than as 
a value, then this error occurs. If a local copy of the {{annotation_map}} is 
created, then the {{get()}} calls work ok.

To test this, the above call was broken out as follows:
{code}
proton::message::annotation_map& am_ref = msg.message_annotations();
uint8_t t = am_ref.get(proton::symbol("x-opt-jms-msg-type")).get<int8_t>();
{code}
fails as before, but
{code}
proton::message::annotation_map am_val = msg.message_annotations();
uint8_t t = am_val.get(proton::symbol("x-opt-jms-msg-type")).get<int8_t>();
{code}
works ok.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to