MCPcopy Create free account
hub / github.com/apache/qpid-proton / pni_normalize_multiple

Function pni_normalize_multiple

c/src/core/codec.c:529–554  ·  view source on GitHub ↗

Append src to data after normalizing for "multiple" field encoding. AMQP composite field definitions can be declared "multiple", see: - http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-types-v1.0-os.html#doc-idp115568 - http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-types-v1.0-os.html#section-composite-type-representation Multiple fields allow redundant encoding of two

Source from the content-addressed store, hash-verified

527 single value.
528*/
529static int pni_normalize_multiple(pn_data_t *data, pn_data_t *src) {
530 int err = 0;
531 pn_handle_t point = pn_data_point(src);
532 pn_data_rewind(src);
533 pn_data_next(src);
534 if (pn_data_type(src) == PN_ARRAY) {
535 switch (pn_data_get_array(src)) {
536 case 0: /* Empty array => null */
537 err = pn_data_put_null(data);
538 break;
539 case 1: /* Single-element array => encode the element */
540 pn_data_enter(src);
541 pn_data_narrow(src);
542 err = pn_data_appendn(data, src, 1);
543 pn_data_widen(src);
544 break;
545 default: /* Multi-element array, encode unchanged */
546 err = pn_data_appendn(data, src, 1);
547 break;
548 }
549 } else {
550 err = pn_data_appendn(data, src, 1); /* Non-array, append the value */
551 }
552 pn_data_restore(src, point);
553 return err;
554}
555
556
557/* Format codes:

Callers 1

pn_data_vfillFunction · 0.85

Calls 11

pn_data_pointFunction · 0.85
pn_data_rewindFunction · 0.85
pn_data_nextFunction · 0.85
pn_data_typeFunction · 0.85
pn_data_get_arrayFunction · 0.85
pn_data_put_nullFunction · 0.85
pn_data_enterFunction · 0.85
pn_data_narrowFunction · 0.85
pn_data_appendnFunction · 0.85
pn_data_widenFunction · 0.85
pn_data_restoreFunction · 0.85

Tested by

no test coverage detected