void parseCombinedRawConfigSnapshot()

in agent/native/ext/ConfigManager.cpp [1251:1312]


void parseCombinedRawConfigSnapshot(
        ConfigManager* cfgManager,
        const CombinedRawConfigSnapshot* combinedRawCfgSnapshot,
        ConfigSnapshot* cfgSnapshot )
{
    ELASTIC_APM_ASSERT_VALID_PTR( cfgManager );
    ELASTIC_APM_ASSERT_VALID_PTR( combinedRawCfgSnapshot );
    ELASTIC_APM_ASSERT_VALID_PTR( cfgSnapshot );

    const OptionMetadata* const optsMeta = cfgManager->meta.optionsMeta;

    ELASTIC_APM_FOR_EACH_OPTION_ID( optId )
    {
        char txtOutStreamBuf[ ELASTIC_APM_TEXT_OUTPUT_STREAM_ON_STACK_BUFFER_SIZE ];
        TextOutputStream txtOutStream = ELASTIC_APM_TEXT_OUTPUT_STREAM_FROM_STATIC_BUFFER( txtOutStreamBuf );
        const OptionMetadata* const optMeta = &( optsMeta[ optId ] );
        const String originalRawValue = combinedRawCfgSnapshot->original[ optId ];
        const String interpretedRawValue = combinedRawCfgSnapshot->interpreted[ optId ];
        const String sourceDescription = combinedRawCfgSnapshot->sourceDescriptions[ optId ];
        ParsedOptionValue parsedOptValue;
        ELASTIC_APM_ZERO_STRUCT( &parsedOptValue );

        if ( cfgManager->isLoggingRelatedOnly && !optMeta->isLoggingRelated )
        {
            continue;
        }

        if ( interpretedRawValue == NULL )
        {
            parsedOptValue = optMeta->defaultValue;
            ELASTIC_APM_LOG_DEBUG(
                    "Configuration option `%s' is not set - using default value (%s)",
                    optMeta->name,
                    optMeta->streamParsedValue( optMeta, parsedOptValue, &txtOutStream ) );
        }
        else if ( optMeta->parseRawValue( optMeta, interpretedRawValue, &parsedOptValue ) == resultSuccess )
        {
            ELASTIC_APM_LOG_DEBUG(
                    "Successfully parsed configuration option `%s' - "
                    "parsed value: %s (raw value: `%s', interpreted as: `%s', source: %s)",
                    optMeta->name,
                    optMeta->streamParsedValue( optMeta, parsedOptValue, &txtOutStream ),
                    originalRawValue,
                    interpretedRawValue,
                    sourceDescription );
        }
        else
        {
            parsedOptValue = optMeta->defaultValue;
            ELASTIC_APM_LOG_ERROR(
                    "Failed to parse configuration option `%s' - "
                    "using default value (%s). Failed to parse raw value: `%s', interpreted as: `%s', source: %s.",
                    optMeta->name,
                    optMeta->streamParsedValue( optMeta, parsedOptValue, &txtOutStream ),
                    originalRawValue,
                    interpretedRawValue,
                    sourceDescription );
        }

        optMeta->setField( optMeta, parsedOptValue, cfgSnapshot );
    }
}