static void deserializeBuffer()

in common/binaryserializer.h [73:121]


    static void deserializeBuffer(
        const char* buffer,
        const size_t size,
        std::vector<swss::FieldValueTuple>& values)
    {
        WARNINGS_NO_CAST_ALIGN;
        auto pkvp_count = (const size_t*)buffer;
        WARNINGS_RESET;

        size_t kvp_count = *pkvp_count;
        auto tmp_buffer = buffer + sizeof(size_t);
        while (kvp_count > 0)
        {
            kvp_count--;

            // read key and value from buffer
            WARNINGS_NO_CAST_ALIGN;
            auto pkeylen = (const size_t*)tmp_buffer;
            WARNINGS_RESET;

            tmp_buffer += sizeof(size_t);
            if ((size_t)(tmp_buffer - buffer + *pkeylen)  > size)
            {
                SWSS_LOG_THROW("serialized key data was truncated, key length: %zu, increase buffer size: %zu",
                                                                                            *pkeylen,
                                                                                            size);
            }

            auto pkey = string(tmp_buffer, *pkeylen);
            tmp_buffer += *pkeylen;

            WARNINGS_NO_CAST_ALIGN;
            auto pvallen = (const size_t*)tmp_buffer;
            WARNINGS_RESET;

            tmp_buffer += sizeof(size_t);
            if ((size_t)(tmp_buffer - buffer + *pvallen)  > size)
            {
                SWSS_LOG_THROW("serialized value data was truncated,, value length: %zu increase buffer size: %zu",
                                                                                            *pvallen,
                                                                                            size);
            }
            
            auto pval = string(tmp_buffer, *pvallen);
            tmp_buffer += *pvallen;

            values.push_back(std::make_pair(pkey, pval));
        }
    }