qdr_terminus_t *qdr_terminus(pn_terminus_t *pn) { qdr_terminus_t *term = new_qdr_terminus_t(); ZERO(term); term->properties = pn_data(0); term->filter = pn_data(0); term->outcomes = pn_data(0); term->capabilities = pn_data(0); if (pn) { const char *addr = pn_terminus_get_address(pn); if (addr && *addr) term->address = qdr_field(addr); term->durability = pn_terminus_get_durability(pn); term->expiry_policy = pn_terminus_get_expiry_policy(pn); term->timeout = pn_terminus_get_timeout(pn); term->dynamic = pn_terminus_is_dynamic(pn); term->distribution_mode = pn_terminus_get_distribution_mode(pn); pn_data_copy(term->properties, pn_terminus_properties(pn)); pn_data_copy(term->filter, pn_terminus_filter(pn)); pn_data_copy(term->outcomes, pn_terminus_outcomes(pn)); pn_data_copy(term->capabilities, pn_terminus_capabilities(pn)); } return term; }
void qdr_terminus_copy(qdr_terminus_t *from, pn_terminus_t *to) { if (!from) return; if (from->address) { qd_address_iterator_reset_view(from->address->iterator, ITER_VIEW_ALL); unsigned char *addr = qd_field_iterator_copy(from->address->iterator); pn_terminus_set_address(to, (char*) addr); free(addr); } pn_terminus_set_durability(to, from->durability); pn_terminus_set_expiry_policy(to, from->expiry_policy); pn_terminus_set_timeout(to, from->timeout); pn_terminus_set_dynamic(to, from->dynamic); pn_terminus_set_distribution_mode(to, from->distribution_mode); pn_data_copy(pn_terminus_properties(to), from->properties); pn_data_copy(pn_terminus_filter(to), from->filter); pn_data_copy(pn_terminus_outcomes(to), from->outcomes); pn_data_copy(pn_terminus_capabilities(to), from->capabilities); }
void qdr_error_copy(qdr_error_t *from, pn_condition_t *to) { if (from->name) { unsigned char *name = qd_field_iterator_copy(from->name->iterator); pn_condition_set_name(to, (char*) name); free(name); } if (from->description) { unsigned char *desc = qd_field_iterator_copy(from->description->iterator); pn_condition_set_description(to, (char*) desc); free(desc); } if (from->info) pn_data_copy(pn_condition_info(to), from->info); }