Commit 2ea7e939 authored by Anton Likhtarov's avatar Anton Likhtarov Committed by Facebook Github Bot

Easy: store metadata with SettingsCore object

Summary: Requires a new header to break the circular dependency

Differential Revision: D9983196

fbshipit-source-id: f15ab3c6128d30906ac25384df92813aa9d76c9a
parent ecdcc6d8
main v2022.02.14.00 v2022.02.07.00 v2022.01.31.00 v2022.01.24.00 v2022.01.17.00 v2022.01.10.00 v2022.01.03.00 v2021.12.27.00 v2021.12.20.00 v2021.12.13.00 v2021.12.06.00 v2021.11.29.00 v2021.11.15.00 v2021.11.08.00 v2021.11.01.00 v2021.10.25.00 v2021.10.18.00 v2021.10.11.00 v2021.10.04.00 v2021.09.27.00 v2021.09.20.00 v2021.09.13.00 v2021.09.06.00 v2021.08.30.00 v2021.08.23.00 v2021.08.02.00 v2021.07.22.00 v2021.07.20.01 v2021.07.20.00 v2021.06.28.00 v2021.06.14.00 v2021.06.07.00 v2021.05.31.00 v2021.05.24.00 v2021.05.17.00 v2021.05.10.00 v2021.05.03.00 v2021.04.26.00 v2021.04.19.00 v2021.04.12.00 v2021.04.05.00 v2021.03.29.00 v2021.03.22.00 v2021.03.15.00 v2021.03.08.00 v2021.03.01.00 v2021.02.22.00 v2021.02.15.00 v2021.02.08.00 v2021.02.01.00 v2021.01.25.00 v2021.01.18.01 v2021.01.18.00 v2021.01.11.00 v2021.01.04.00 v2020.12.28.00 v2020.12.21.00 v2020.12.14.00 v2020.12.07.00 v2020.11.30.00 v2020.11.23.00 v2020.11.16.00 v2020.11.09.00 v2020.11.02.00 v2020.10.26.00 v2020.10.19.00 v2020.10.12.00 v2020.10.05.00 v2020.09.28.00 v2020.09.21.00 v2020.09.14.00 v2020.09.07.00 v2020.08.31.00 v2020.08.24.00 v2020.08.17.00 v2020.08.10.00 v2020.08.03.00 v2020.07.27.00 v2020.07.20.00 v2020.07.13.00 v2020.07.06.00 v2020.06.29.00 v2020.06.15.00 v2020.06.08.00 v2020.06.01.00 v2020.05.25.00 v2020.05.18.00 v2020.05.11.00 v2020.05.04.00 v2020.04.27.00 v2020.04.20.00 v2020.04.13.00 v2020.04.06.00 v2020.03.30.00 v2020.03.23.00 v2020.03.16.00 v2020.03.09.00 v2020.03.02.00 v2020.02.24.00 v2020.02.17.00 v2020.02.10.00 v2020.02.03.00 v2020.01.27.00 v2020.01.20.00 v2020.01.13.00 v2020.01.06.00 v2019.12.30.00 v2019.12.23.00 v2019.12.16.00 v2019.12.09.00 v2019.12.06.00 v2019.12.02.00 v2019.11.11.00 v2019.11.04.00 v2019.10.28.00 v2019.10.21.00 v2019.10.14.00 v2019.10.07.00 v2019.09.30.00 v2019.09.23.00 v2019.09.16.00 v2019.09.09.00 v2019.09.02.00 v2019.08.26.00 v2019.08.19.00 v2019.08.12.00 v2019.08.05.00 v2019.07.29.00 v2019.07.22.00 v2019.06.17.00 v2019.06.10.00 v2019.06.03.00 v2019.05.27.00 v2019.05.20.00 v2019.05.13.00 v2019.05.06.00 v2019.04.29.00 v2019.04.22.00 v2019.04.15.00 v2019.04.08.00 v2019.04.01.00 v2019.03.25.00 v2019.03.18.00 v2019.03.04.00 v2019.02.25.00 v2019.02.18.00 v2019.02.11.00 v2019.02.04.00 v2019.01.28.00 v2019.01.21.00 v2019.01.14.00 v2019.01.07.00 v2018.12.31.00 v2018.12.24.00 v2018.12.17.00 v2018.12.10.00 v2018.12.03.00 v2018.11.26.00 v2018.11.19.00 v2018.11.12.00 v2018.11.05.00 v2018.10.29.00 v2018.10.22.00 v2018.10.15.00 v2018.10.08.00 v2018.10.01.00 v2018.09.24.00
No related merge requests found
......@@ -19,47 +19,11 @@
#include <string>
#include <folly/Range.h>
#include <folly/experimental/settings/SettingsMetadata.h>
#include <folly/experimental/settings/detail/SettingsImpl.h>
namespace folly {
namespace settings {
/**
* Static information about the setting definition
*/
struct SettingMetadata {
/**
* Project string.
*/
folly::StringPiece project;
/**
* Setting name within the project.
*/
folly::StringPiece name;
/**
* String representation of the type.
*/
folly::StringPiece typeStr;
/**
* typeid() of the type.
*/
const std::type_info& typeId;
/**
* String representation of the default value.
* (note: string literal default values will be stringified with quotes)
*/
folly::StringPiece defaultStr;
/**
* Setting description field.
*/
folly::StringPiece description;
};
namespace detail {
template <class T>
......@@ -99,11 +63,9 @@ class Setting {
SettingMetadata meta,
T defaultValue,
std::atomic<uint64_t>& trivialStorage)
: meta_(std::move(meta)),
core_(meta_, std::move(defaultValue), trivialStorage) {}
: core_(std::move(meta), std::move(defaultValue), trivialStorage) {}
private:
SettingMetadata meta_;
SettingCore<T> core_;
};
......
/*
* Copyright 2018-present Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
#include <folly/Range.h>
namespace folly {
namespace settings {
/**
* Static information about the setting definition
*/
struct SettingMetadata {
/**
* Project string.
*/
folly::StringPiece project;
/**
* Setting name within the project.
*/
folly::StringPiece name;
/**
* String representation of the type.
*/
folly::StringPiece typeStr;
/**
* typeid() of the type.
*/
const std::type_info& typeId;
/**
* String representation of the default value.
* (note: string literal default values will be stringified with quotes)
*/
folly::StringPiece defaultStr;
/**
* Setting description field.
*/
folly::StringPiece description;
};
} // namespace settings
} // namespace folly
......@@ -25,12 +25,10 @@
#include <folly/Range.h>
#include <folly/SharedMutex.h>
#include <folly/ThreadLocal.h>
#include <folly/experimental/settings/SettingsMetadata.h>
namespace folly {
namespace settings {
struct SettingMetadata;
namespace detail {
/**
......@@ -130,10 +128,10 @@ class SettingCore : public SettingCoreBase {
}
SettingCore(
const SettingMetadata& meta,
SettingMetadata meta,
T defaultValue,
std::atomic<uint64_t>& trivialStorage)
: meta_(meta),
: meta_(std::move(meta)),
defaultValue_(std::move(defaultValue)),
trivialStorage_(trivialStorage),
localValue_([]() {
......@@ -146,7 +144,7 @@ class SettingCore : public SettingCoreBase {
}
private:
const SettingMetadata& meta_;
SettingMetadata meta_;
const T defaultValue_;
SharedMutex globalLock_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment