Contains functions and types to start a userver based service/tool.
Classes | |
class | AuthCheckerSettings |
Component that loads auth configuration settings from a components::Secdist component if the latter was registered in components::ComponentList. More... | |
class | CachingComponentBase |
Base class for caching components. More... | |
class | ClickHouse |
ClickHouse client component. More... | |
class | ComponentBase |
Base class for all application components, it depends on components::Logger and components::Tracer. More... | |
class | ComponentConfig |
class | ComponentContext |
Class to retrieve other components. More... | |
class | ComponentList |
A list to keep a unique list of components to start with components::Run(), utils::DaemonMain() or components::RunOnce(). More... | |
class | ComponentsLoadCancelledException |
Exception that is thrown from components::ComponentContext::FindComponent() if a component load failed. More... | |
class | DefaultSecdistProvider |
Component that stores security related data (keys, passwords, ...). More... | |
class | DumpConfigurator |
Helper component that manages common configuration for userver dumps. More... | |
class | DynamicConfig |
Component that stores the dynamic config. More... | |
class | DynamicConfigClient |
Component that starts a clients::dynamic_config::Client client. More... | |
class | DynamicConfigClientUpdater |
Component that does a periodic update of runtime configs. More... | |
class | DynamicConfigUpdatesSinkBase |
Base class for components acting as dynamic config updates sinks. More... | |
class | FsCache |
Component for storing files in memory. More... | |
class | HttpClient |
Component that manages clients::http::Client. More... | |
struct | InMemoryConfig |
class | Logging |
Logging component More... | |
class | LoggingConfigurator |
Helper component to configure logging. More... | |
class | ManagerControllerComponent |
Component that prepares the engine internals and starts all the other components. More... | |
class | Mongo |
MongoDB client component. More... | |
class | MongoCache |
Base class for all caches polling mongo collection More... | |
class | MultiMongo |
Dynamically configurable MongoDB client component. More... | |
class | PostgreCache |
Caching component for PostgreSQL. See Caching Component for PostgreSQL. More... | |
class | Postgres |
PosgreSQL client component. More... | |
class | ProcessStarter |
Component for getting the engine::subprocess::ProcessStarter. More... | |
class | RabbitMQ |
RabbitMQ (AMQP 0.9.1) client component. More... | |
class | RawComponentBase |
The base class for all components. Don't use it for application components, use ComponentBase instead. More... | |
class | Redis |
Valkey and Redis client component. More... | |
class | Secdist |
Component that stores security related data (keys, passwords, ...). More... | |
class | Server |
Component that listens for incoming requests, manages incoming connections and passes the requests to the appropriate handler. More... | |
class | SingleThreadedTaskProcessors |
Component that starts multiple single threaded task processors. More... | |
class | State |
class | StatisticsStorage |
Component that keeps a utils::statistics::Storage storage for metrics. More... | |
class | SystemStatisticsCollector |
Component for system resource usage statistics collection. More... | |
class | TcpAcceptorBase |
Component for accepting incoming TCP connections. More... | |
class | TestsuiteSupport |
Testsuite support component. More... | |
class | Tracer |
Component that initializes the request tracing facilities. More... | |
Typedefs | |
using | LoggableComponentBase = ComponentBase |
using | ComponentConfigMap = std::unordered_map<std::string, const ComponentConfig&> |
Enumerations | |
enum class | ComponentHealth { kOk , kFallback , kFatal } |
State of the component. More... | |
enum class | ConfigFileMode { kRequired , kNotRequired } |
enum class | ValidationMode { kOnlyTurnedOn , kAll } |
enum class | ServiceLifetimeStage { kLoading , kOnAllComponentsLoadedIsRunning , kRunning , kGracefulShutdown , kOnAllComponentsAreStoppingIsRunning , kStopping } |
All components pass through these stages during the service lifetime. More... | |
Functions | |
std::string_view | GetCurrentComponentName (const ComponentContext &context) |
Equivalent to components::ComponentContext::GetComponentName, but works with forward declaration of the components::ComponentContext. | |
ValidationMode | Parse (const yaml_config::YamlConfig &value, formats::parse::To< ValidationMode >) |
ComponentConfig | Parse (const yaml_config::YamlConfig &value, formats::parse::To< ComponentConfig >) |
ComponentList | MinimalServerComponentList () |
Returns a list of components to start a basic HTTP server. | |
void | Run (const std::string &config_path, const std::optional< std::string > &config_vars_path, const std::optional< std::string > &config_vars_override_path, const ComponentList &component_list) |
void | Run (const InMemoryConfig &config, const ComponentList &component_list) |
void | RunOnce (const std::string &config_path, const std::optional< std::string > &config_vars_path, const std::optional< std::string > &config_vars_override_path, const ComponentList &component_list) |
void | RunOnce (const InMemoryConfig &config, const ComponentList &component_list) |
void | RequestStop () |
ComponentList | CommonComponentList () |
Returns the most common list of components with runtime config updates and HTTP client. | |
ComponentList | CommonServerComponentList () |
Returns the most common list of components to start a fully functional server. | |
ComponentList | MinimalComponentList () |
Returns a list of components to do basic logging, component initialization and configuration. | |
std::string_view | ToString (ServiceLifetimeStage) |
Converts a components::ServiceLifetimeStage to debug string for logging. | |
Variables | |
template<typename Component> | |
constexpr bool | kHasValidate = false |
template<typename Component> | |
constexpr bool | kForceNoValidation = false |
template<typename Component> | |
constexpr auto | kConfigFileMode = ConfigFileMode::kRequired |
template<> | |
constexpr bool | kHasValidate< HttpClient > = true |
template<> | |
constexpr bool | kHasValidate< Postgres > = true |
template<> | |
constexpr bool | kHasValidate< TestsuiteSupport > = true |
template<> | |
constexpr bool | kHasValidate< Secdist > = true |
template<> | |
constexpr auto | kConfigFileMode< Secdist > = ConfigFileMode::kNotRequired |
template<> | |
constexpr bool | kHasValidate< DefaultSecdistProvider > = true |
template<> | |
constexpr bool | kHasValidate< DumpConfigurator > = true |
template<> | |
constexpr bool | kHasValidate< FsCache > = true |
template<> | |
constexpr bool | kHasValidate< LoggingConfigurator > = true |
}@ | |
template<> | |
constexpr auto | kConfigFileMode< ManagerControllerComponent > = ConfigFileMode::kNotRequired |
template<> | |
constexpr bool | kHasValidate< ProcessStarter > = true |
template<> | |
constexpr bool | kHasValidate< SingleThreadedTaskProcessors > = true |
template<> | |
constexpr bool | kHasValidate< StatisticsStorage > = true |
template<> | |
constexpr auto | kConfigFileMode< StatisticsStorage > = ConfigFileMode::kNotRequired |
template<> | |
constexpr bool | kHasValidate< DynamicConfigClient > = true |
template<> | |
constexpr bool | kHasValidate< DynamicConfig > = true |
template<> | |
constexpr auto | kConfigFileMode< DynamicConfig > = ConfigFileMode::kNotRequired |
template<> | |
constexpr bool | kHasValidate< DynamicConfigClientUpdater > = true |
template<> | |
constexpr bool | kHasValidate< Logging > = true |
template<> | |
constexpr bool | kHasValidate< Server > = true |
template<> | |
constexpr bool | kHasValidate< AuthCheckerSettings > = true |
template<> | |
constexpr auto | kConfigFileMode< AuthCheckerSettings > = ConfigFileMode::kNotRequired |
template<> | |
constexpr bool | kHasValidate< Tracer > = true |
template<> | |
constexpr auto | kConfigFileMode< Tracer > = ConfigFileMode::kNotRequired |
template<> | |
constexpr bool | kHasValidate< SystemStatisticsCollector > = true |
const std::string | kFetchAndParseStage = "fetch_and_parse" |
constexpr std::chrono::milliseconds | kCpuRelaxThreshold {10} |
constexpr std::chrono::milliseconds | kCpuRelaxInterval {2} |
template<class MongoCacheTraits> | |
constexpr bool | kHasValidate< MongoCache< MongoCacheTraits > > = true |
template<> | |
constexpr bool | kHasValidate< Mongo > = true |
template<> | |
constexpr bool | kHasValidate< MultiMongo > = true |
template<typename PostgreCachePolicy> | |
constexpr bool | kHasValidate< PostgreCache< PostgreCachePolicy > > = true |
template<> | |
constexpr bool | kHasValidate< Redis > = true |
template<> | |
constexpr bool | kHasValidate< ClickHouse > = true |
template<typename Client> | |
constexpr bool | kHasValidate< ugrpc::client::SimpleClientComponent< Client > > = true |
template<> | |
constexpr bool | kHasValidate< RabbitMQ > = true |
template<> | |
constexpr bool | kHasValidate< urabbitmq::ConsumerComponentBase > = true |
using components::ComponentConfigMap = std::unordered_map<std::string, const ComponentConfig&> |
Definition at line 29 of file component_config.hpp.
Definition at line 71 of file component_base.hpp.
|
strong |
State of the component.
Enumerator | |
---|---|
kOk | component is alive and fine |
kFallback | component in fallback state, but the service keeps working |
kFatal | component is sick, service can not work without it |
Definition at line 17 of file raw_component_base.hpp.
|
strong |
Whether the static config for the component must always be present, or can be missing
Enumerator | |
---|---|
kRequired | component must be setup in config |
kNotRequired | component must be not setup in config |
Definition at line 28 of file raw_component_base.hpp.
|
strong |
All components pass through these stages during the service lifetime.
Enumerator | |
---|---|
kLoading | Constructors are running for all registered components. Components can depend on each other at this stage by calling components::ComponentContext::FindComponent and friends. If any component throws an exception, then the service transitions into ServiceLifetimeStage::kOnAllComponentsAreStoppingIsRunning stage. |
kOnAllComponentsLoadedIsRunning | components::ComponentBase::OnAllComponentsLoaded (noop by default) is running for all components. This stage starts after constructors for all components have completed without an exception. The order of |
kRunning | This stage marks that all This stage ends once the service receives a shutdown signal ( |
kGracefulShutdown | The service waits for Example: components_manager:
graceful_shutdown_interval: 10s
|
kOnAllComponentsAreStoppingIsRunning | components::ComponentBase::OnAllComponentsAreStopping (noop by default) is running for all components. This stage starts once the service has received a shutdown signal (see ServiceLifetimeStage::kRunning) and ServiceLifetimeStage::kGracefulShutdown stage (if any) has completed. If an error occurs during service startup, then The order of |
kStopping | Destructors are running for all components. This stage starts once ServiceLifetimeStage::kOnAllComponentsAreStoppingIsRunning stage. If an error occurs during service startup, then destructors run after ServiceLifetimeStage::kOnAllComponentsAreStoppingIsRunning for all constructed components. The order of destructor invocations respects the order of components defined at ServiceLifetimeStage::kComponentsLoading stage (they run in the reverse-dependency order). |
|
strong |
Definition at line 12 of file static_config_validator.hpp.
void components::RequestStop | ( | ) |
Requests stop of the component system. The service will be eventually stopped.
void components::Run | ( | const InMemoryConfig & | config, |
const ComponentList & | component_list ) |
Starts a server with the provided component list and config. Reopens the logging files on SIGUSR1.
void components::Run | ( | const std::string & | config_path, |
const std::optional< std::string > & | config_vars_path, | ||
const std::optional< std::string > & | config_vars_override_path, | ||
const ComponentList & | component_list ) |
Starts a server with the provided component list and config loaded from file. Reopens the logging files on SIGUSR1.
void components::RunOnce | ( | const InMemoryConfig & | config, |
const ComponentList & | component_list ) |
Runs the component list once with the config.
void components::RunOnce | ( | const std::string & | config_path, |
const std::optional< std::string > & | config_vars_path, | ||
const std::optional< std::string > & | config_vars_override_path, | ||
const ComponentList & | component_list ) |
Runs the component list once with the config loaded from file.
|
inlineconstexpr |
Specialize this to customize the loading of component settings
Definition at line 78 of file raw_component_base.hpp.
|
inlineconstexpr |
Definition at line 47 of file auth_checker_settings_component.hpp.
|
inlineconstexpr |
Definition at line 121 of file component.hpp.
|
inlineconstexpr |
Definition at line 95 of file manager_controller_component.hpp.
|
inlineconstexpr |
Definition at line 61 of file component.hpp.
|
inlineconstexpr |
Definition at line 62 of file statistics_storage.hpp.
|
inlineconstexpr |
Definition at line 49 of file component.hpp.
|
inlineconstexpr |
Definition at line 31 of file base_mongo_cache.hpp.
|
inlineconstexpr |
Definition at line 30 of file base_mongo_cache.hpp.
|
inline |
Definition at line 28 of file base_mongo_cache.hpp.
|
inlineconstexpr |
Specialize it for typename Component to skip validation of static config against schema from Component::GetStaticConfigSchema
Definition at line 72 of file raw_component_base.hpp.
|
inlineconstexpr |
Specialize it for typename Component to validate static config against schema from Component::GetStaticConfigSchema
Definition at line 65 of file raw_component_base.hpp.
|
inlineconstexpr |
Definition at line 44 of file auth_checker_settings_component.hpp.
|
inlineconstexpr |
Definition at line 77 of file component.hpp.
|
inlineconstexpr |
Definition at line 75 of file provider_component.hpp.
|
inlineconstexpr |
Definition at line 47 of file dump_configurator.hpp.
|
inlineconstexpr |
Definition at line 118 of file component.hpp.
|
inlineconstexpr |
Definition at line 60 of file component.hpp.
|
inlineconstexpr |
Definition at line 135 of file component.hpp.
|
inlineconstexpr |
Definition at line 44 of file fs_cache.hpp.
|
inlineconstexpr |
Definition at line 86 of file component.hpp.
|
inlineconstexpr |
Definition at line 137 of file component.hpp.
|
inlineconstexpr |
}@
Definition at line 68 of file logging_configurator.hpp.
|
inlineconstexpr |
Definition at line 122 of file component.hpp.
|
inlineconstexpr |
Definition at line 160 of file base_mongo_cache.hpp.
|
inlineconstexpr |
Definition at line 224 of file component.hpp.
|
inlineconstexpr |
Definition at line 457 of file base_postgres_cache.hpp.
|
inlineconstexpr |
Definition at line 195 of file component.hpp.
|
inlineconstexpr |
Definition at line 43 of file process_starter.hpp.
|
inlineconstexpr |
Definition at line 77 of file component.hpp.
|
inlineconstexpr |
Definition at line 181 of file component.hpp.
|
inlineconstexpr |
Definition at line 58 of file component.hpp.
|
inlineconstexpr |
Definition at line 122 of file component.hpp.
|
inlineconstexpr |
Definition at line 51 of file single_threaded_task_processors.hpp.
|
inlineconstexpr |
Definition at line 59 of file statistics_storage.hpp.
|
inlineconstexpr |
Definition at line 70 of file system_statistics_collector.hpp.
|
inlineconstexpr |
Definition at line 97 of file testsuite_support.hpp.
|
inlineconstexpr |
Definition at line 46 of file component.hpp.
|
inlineconstexpr |
Definition at line 101 of file simple_client_component.hpp.
|
inlineconstexpr |
Definition at line 86 of file consumer_component_base.hpp.