in src/amqpvalue.c [3069:3112]
static int encode_long_value(AMQPVALUE_ENCODER_OUTPUT encoder_output, void* context, int64_t value, bool use_smallest)
{
int result;
if (use_smallest)
{
/* Codes_SRS_AMQPVALUE_01_288: [<encoding name="smalllong" code="0x55" category="fixed" width="1" label="8-bit two's-complement integer"/>] */
if (output_byte(encoder_output, context, value & 0xFF) != 0)
{
/* Codes_SRS_AMQPVALUE_01_274: [When the encoder output function fails, amqpvalue_encode shall fail and return a non-zero value.] */
LogError("Failed encoding small long value");
result = MU_FAILURE;
}
else
{
/* Codes_SRS_AMQPVALUE_01_266: [On success amqpvalue_encode shall return 0.] */
result = 0;
}
}
else
{
/* Codes_SRS_AMQPVALUE_01_287: [<encoding code="0x81" category="fixed" width="8" label="64-bit two's-complement integer in network byte order"/>] */
if ((output_byte(encoder_output, context, (value >> 56) & 0xFF) != 0) ||
(output_byte(encoder_output, context, (value >> 48) & 0xFF) != 0) ||
(output_byte(encoder_output, context, (value >> 40) & 0xFF) != 0) ||
(output_byte(encoder_output, context, (value >> 32) & 0xFF) != 0) ||
(output_byte(encoder_output, context, (value >> 24) & 0xFF) != 0) ||
(output_byte(encoder_output, context, (value >> 16) & 0xFF) != 0) ||
(output_byte(encoder_output, context, (value >> 8) & 0xFF) != 0) ||
(output_byte(encoder_output, context, value & 0xFF) != 0))
{
/* Codes_SRS_AMQPVALUE_01_274: [When the encoder output function fails, amqpvalue_encode shall fail and return a non-zero value.] */
LogError("Failed encoding long value");
result = MU_FAILURE;
}
else
{
/* Codes_SRS_AMQPVALUE_01_266: [On success amqpvalue_encode shall return 0.] */
result = 0;
}
}
return result;
}