Decode the message corresponding to a delivery from a link.
| 97 | |
| 98 | // Decode the message corresponding to a delivery from a link. |
| 99 | void message_decode(message& msg, proton::delivery delivery) { |
| 100 | std::vector<char> buf; |
| 101 | buf.resize(pn_delivery_pending(unwrap(delivery))); |
| 102 | if (buf.empty()) |
| 103 | throw error("message decode: no delivery pending on link"); |
| 104 | proton::receiver link = delivery.receiver(); |
| 105 | assert(!buf.empty()); |
| 106 | ssize_t n = pn_link_recv(unwrap(link), const_cast<char *>(&buf[0]), buf.size()); |
| 107 | if (n != ssize_t(buf.size())) throw error(MSG("receiver read failure")); |
| 108 | msg.clear(); |
| 109 | msg.decode(buf); |
| 110 | pn_link_advance(unwrap(link)); |
| 111 | } |
| 112 | |
| 113 | void on_delivery(messaging_handler& handler, pn_event_t* event) { |
| 114 | pn_link_t *lnk = pn_event_link(event); |
no test coverage detected