in src/router_core/terminus.c [79:202]
void qdr_terminus_format(qdr_terminus_t *term, char *output, size_t *size)
{
size_t len = safe_snprintf(output, *size, "{");
output += len;
*size -= len;
len = 0;
do {
if (term == 0)
break;
if (term->coordinator) {
len = safe_snprintf(output, *size, "<coordinator>");
break;
}
if (term->dynamic) {
len = safe_snprintf(output, *size, "(dyn)");
output += len;
*size -= len;
}
if (term->address && term->address->iterator) {
qd_iterator_reset_view(term->address->iterator, ITER_VIEW_ALL);
len = qd_iterator_ncopy(term->address->iterator, (unsigned char*) output, *size - 1);
output[len] = 0;
} else
len = safe_snprintf(output, *size, "<none>");
output += len;
*size -= len;
char *text = "";
switch (term->durability) {
case PN_NONDURABLE: break;
case PN_CONFIGURATION: text = " dur:config"; break;
case PN_DELIVERIES: text = " dur:deliveries"; break;
}
len = safe_snprintf(output, *size, "%s", text);
output += len;
*size -= len;
switch (term->expiry_policy) {
case PN_EXPIRE_WITH_LINK: text = " expire:link"; break;
case PN_EXPIRE_WITH_SESSION: text = " expire:sess"; break;
case PN_EXPIRE_WITH_CONNECTION: text = " expire:conn"; break;
case PN_EXPIRE_NEVER: text = ""; break;
}
len = safe_snprintf(output, *size, "%s", text);
output += len;
*size -= len;
switch (term->distribution_mode) {
case PN_DIST_MODE_UNSPECIFIED: text = ""; break;
case PN_DIST_MODE_COPY: text = " dist:copy"; break;
case PN_DIST_MODE_MOVE: text = " dist:move"; break;
}
len = safe_snprintf(output, *size, "%s", text);
output += len;
*size -= len;
if (term->timeout > 0) {
len = safe_snprintf(output, *size, " timeout:%"PRIu32, term->timeout);
output += len;
*size -= len;
}
if (term->capabilities && pn_data_size(term->capabilities) > 0) {
len = safe_snprintf(output, *size, " caps:");
output += len;
*size -= len;
len = *size;
pn_data_format(term->capabilities, output, &len);
output += len;
*size -= len;
}
if (term->filter && pn_data_size(term->filter) > 0) {
len = safe_snprintf(output, *size, " flt:");
output += len;
*size -= len;
len = *size;
pn_data_format(term->filter, output, &len);
output += len;
*size -= len;
}
if (term->outcomes && pn_data_size(term->outcomes) > 0) {
len = safe_snprintf(output, *size, " outcomes:");
output += len;
*size -= len;
len = *size;
pn_data_format(term->outcomes, output, &len);
output += len;
*size -= len;
}
if (term->properties && pn_data_size(term->properties) > 0) {
len = safe_snprintf(output, *size, " props:");
output += len;
*size -= len;
len = *size;
pn_data_format(term->properties, output, &len);
output += len;
*size -= len;
}
len = 0;
} while (false);
output += len;
*size -= len;
len = safe_snprintf(output, *size, "}");
*size -= len;
}