static int encode_ulong_value()

in src/amqpvalue.c [2724:2768]


static int encode_ulong_value(AMQPVALUE_ENCODER_OUTPUT encoder_output, void* context, uint64_t value, bool use_smallest)
{
    int result;

    if (use_smallest)
    {
        /* smallulong */
        /* Codes_SRS_AMQPVALUE_01_281: [<encoding name="smallulong" code="0x53" category="fixed" width="1" label="unsigned long value in the range 0 to 255 inclusive"/>] */
        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 ulong value");
            result = MU_FAILURE;
        }
        else
        {
            /* Codes_SRS_AMQPVALUE_01_266: [On success amqpvalue_encode shall return 0.] */
            result = 0;
        }
    }
    else
    {
        /* Codes_SRS_AMQPVALUE_01_280: [<encoding code="0x80" category="fixed" width="8" label="64-bit unsigned 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 ulong value");
            result = MU_FAILURE;
        }
        else
        {
            /* Codes_SRS_AMQPVALUE_01_266: [On success amqpvalue_encode shall return 0.] */
            result = 0;
        }
    }

    return result;
}