sai_status_t Syncd::processSingleEvent()

in syncd/Syncd.cpp [345:425]


sai_status_t Syncd::processSingleEvent(
        _In_ const swss::KeyOpFieldsValuesTuple &kco)
{
    SWSS_LOG_ENTER();

    auto& key = kfvKey(kco);
    auto& op = kfvOp(kco);

    SWSS_LOG_INFO("key: %s op: %s", key.c_str(), op.c_str());

    if (key.length() == 0)
    {
        SWSS_LOG_DEBUG("no elements in m_buffer");

        return SAI_STATUS_SUCCESS;
    }

    WatchdogScope ws(m_timerWatchdog, op + ":" + key, &kco);

    if (op == REDIS_ASIC_STATE_COMMAND_CREATE)
        return processQuadEvent(SAI_COMMON_API_CREATE, kco);

    if (op == REDIS_ASIC_STATE_COMMAND_REMOVE)
        return processQuadEvent(SAI_COMMON_API_REMOVE, kco);

    if (op == REDIS_ASIC_STATE_COMMAND_SET)
        return processQuadEvent(SAI_COMMON_API_SET, kco);

    if (op == REDIS_ASIC_STATE_COMMAND_GET)
        return processQuadEvent(SAI_COMMON_API_GET, kco);

    if (op == REDIS_ASIC_STATE_COMMAND_BULK_CREATE)
        return processBulkQuadEvent(SAI_COMMON_API_BULK_CREATE, kco);

    if (op == REDIS_ASIC_STATE_COMMAND_BULK_REMOVE)
        return processBulkQuadEvent(SAI_COMMON_API_BULK_REMOVE, kco);

    if (op == REDIS_ASIC_STATE_COMMAND_BULK_SET)
        return processBulkQuadEvent(SAI_COMMON_API_BULK_SET, kco);

    if (op == REDIS_ASIC_STATE_COMMAND_BULK_GET)
        return processBulkQuadEvent(SAI_COMMON_API_BULK_GET, kco);

    if (op == REDIS_ASIC_STATE_COMMAND_NOTIFY)
        return processNotifySyncd(kco);

    if (op == REDIS_ASIC_STATE_COMMAND_GET_STATS)
        return processGetStatsEvent(kco);

    if (op == REDIS_ASIC_STATE_COMMAND_CLEAR_STATS)
        return processClearStatsEvent(kco);

    if (op == REDIS_ASIC_STATE_COMMAND_FLUSH)
        return processFdbFlush(kco);

    if (op == REDIS_ASIC_STATE_COMMAND_ATTR_CAPABILITY_QUERY)
        return processAttrCapabilityQuery(kco);

    if (op == REDIS_ASIC_STATE_COMMAND_ATTR_ENUM_VALUES_CAPABILITY_QUERY)
        return processAttrEnumValuesCapabilityQuery(kco);

    if (op == REDIS_ASIC_STATE_COMMAND_OBJECT_TYPE_GET_AVAILABILITY_QUERY)
        return processObjectTypeGetAvailabilityQuery(kco);

    if (op == REDIS_FLEX_COUNTER_COMMAND_START_POLL)
        return processFlexCounterEvent(key, SET_COMMAND, kfvFieldsValues(kco));

    if (op == REDIS_FLEX_COUNTER_COMMAND_STOP_POLL)
        return processFlexCounterEvent(key, DEL_COMMAND, kfvFieldsValues(kco));

    if (op == REDIS_FLEX_COUNTER_COMMAND_SET_GROUP)
        return processFlexCounterGroupEvent(key, SET_COMMAND, kfvFieldsValues(kco));

    if (op == REDIS_FLEX_COUNTER_COMMAND_DEL_GROUP)
        return processFlexCounterGroupEvent(key, DEL_COMMAND, kfvFieldsValues(kco));

    if (op == REDIS_ASIC_STATE_COMMAND_STATS_CAPABILITY_QUERY)
        return processStatsCapabilityQuery(kco);

    SWSS_LOG_THROW("event op '%s' is not implemented, FIXME", op.c_str());
}