summaryrefslogtreecommitdiffstats
path: root/yql/essentials/minikql/runtime_settings/runtime_settings_configuration.h
blob: 735570e71fffae43ae9f975d104c4fb875d7472a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#pragma once

#include "runtime_settings.h"

#include <yql/essentials/providers/common/config/yql_dispatch.h>

namespace NYql {

// Introspection for the runtime settings.
// Must be logically stateless since it may be constructed multiple times from any line of code.
class TRuntimeSettingsConfiguration: public NYql::NCommon::TSettingDispatcher, public TRuntimeSettings {
public:
    using TPtr = TSharedPtr<TRuntimeSettingsConfiguration, TAtomicCounter>;
    using TConstPtr = TSharedPtr<const TRuntimeSettingsConfiguration, TAtomicCounter>;

    TRuntimeSettingsConfiguration();
    explicit TRuntimeSettingsConfiguration(const TQContext& QContext);
    explicit TRuntimeSettingsConfiguration(const TRuntimeSettings& settings, const TQContext& QContext = {});
};

TRuntimeSettingsConfiguration::TConstPtr MakeRuntimeSettingsConfiguration(auto&&... args) {
    return MakeShared<const TRuntimeSettingsConfiguration, TAtomicCounter>(std::forward<decltype(args)>(args)...);
}

TRuntimeSettingsConfiguration::TPtr MakeRuntimeSettingsConfigurationMutable(auto&&... args) {
    return MakeShared<TRuntimeSettingsConfiguration, TAtomicCounter>(std::forward<decltype(args)>(args)...);
}

} // namespace NYql