#include <userver/components/component_context.hpp>
Class to retrieve other components.
Only the const member functions of this class are meant for usage in component constructor (because of that this class is always passed as a const reference to the constructors).
- Warning
- Don't store references to
ComponentContext
in your component! Lifetime of the passed ComponentContext
ends as soon as the constructor ends.
For usage outside the component constructor see components::State.
- See also
- Components
- Examples
- components/component_sample_test.cpp, components/component_sample_test.hpp, grpc-generic-proxy/src/proxy_service.cpp, grpc-generic-proxy/src/proxy_service.hpp, libraries/easy/samples/4_custom_dependency/main.cpp, libraries/easy/samples/5_pg_service_template/src/main.cpp, postgresql/functional_tests/basic_chaos/postgres_service.cpp, samples/config_service/main.cpp, samples/digest_auth_service/auth_digest.cpp, samples/digest_auth_service/auth_digest.hpp, samples/flatbuf_service/main.cpp, samples/grpc_middleware_service/src/middlewares/server/meta_filter.cpp, samples/grpc_middleware_service/src/middlewares/server/meta_filter.hpp, samples/grpc_service/src/greeter_service.cpp, samples/grpc_service/src/greeter_service.hpp, samples/kafka_service/src/consumer_handler.cpp, samples/kafka_service/src/consumer_handler.hpp, samples/kafka_service/src/producer_handler.cpp, samples/kafka_service/src/producer_handler.hpp, samples/mongo_service/main.cpp, samples/postgres_auth/auth_bearer.cpp, samples/postgres_auth/auth_bearer.hpp, samples/postgres_service/main.cpp, samples/redis_service/main.cpp, samples/s3api/src/s3api_client.cpp, samples/s3api/src/s3api_client.hpp, samples/tcp_full_duplex_service/main.cpp, samples/tcp_service/main.cpp, samples/testsuite-support/src/metrics.cpp, samples/testsuite-support/src/metrics.hpp, samples/testsuite-support/src/tasks.cpp, samples/ydb_service/components/topic_reader.cpp, and samples/ydb_service/components/topic_reader.hpp.
Definition at line 75 of file component_context.hpp.
|
| ComponentContext (ComponentContext &&)=delete |
|
ComponentContext & | operator= (ComponentContext &&)=delete |
|
template<typename T> |
T & | FindComponent () const |
| Finds a component of type T with specified name (if any) and returns the component after it was initialized.
|
|
template<typename T> |
T & | FindComponent (std::string_view name) const |
|
template<typename T> |
T & | FindComponent (std::string_view={}) |
|
template<typename T> |
T * | FindComponentOptional () const |
| If there's no component with specified type and name return nullptr; otherwise behaves as FindComponent().
|
|
template<typename T> |
T * | FindComponentOptional (std::string_view name) const |
|
template<typename T> |
T & | FindComponentOptional (std::string_view={}) |
|
engine::TaskProcessor & | GetTaskProcessor (std::string_view name) const |
| Returns an engine::TaskProcessor with the specified name.
|
|
template<typename T> |
engine::TaskProcessor & | GetTaskProcessor (const T &) |
|
std::string_view | GetComponentName () const |
| Returns the current component name. This is helpful in cases where multiple instances of the component class may be created using component_list.Append<T>("custom-name") syntax.
|
|
◆ FindComponent() [1/3]
template<typename T>
T & components::ComponentContext::FindComponent |
( |
| ) |
const |
|
inline |
Finds a component of type T with specified name (if any) and returns the component after it was initialized.
Can only be called from other component's constructor in a task where that constructor was called. May block and asynchronously wait for the creation of the requested component.
- Exceptions
-
ComponentsLoadCancelledException | if components loading was cancelled due to errors in the creation of other component. |
std::runtime_error | if component missing in component_list was requested. |
- Examples
- components/component_sample_test.cpp, libraries/easy/samples/4_custom_dependency/main.cpp, libraries/easy/samples/5_pg_service_template/src/main.cpp, postgresql/functional_tests/basic_chaos/postgres_service.cpp, samples/digest_auth_service/auth_digest.cpp, samples/kafka_service/src/consumer_handler.cpp, samples/kafka_service/src/producer_handler.cpp, samples/mongo_service/main.cpp, samples/postgres_auth/auth_bearer.cpp, samples/s3api/src/s3api_client.cpp, samples/testsuite-support/src/metrics.cpp, and samples/ydb_service/components/topic_reader.cpp.
Definition at line 92 of file component_context.hpp.
◆ FindComponent() [2/3]
template<typename T>
T & components::ComponentContext::FindComponent |
( |
std::string_view | name | ) |
const |
|
inline |
◆ FindComponent() [3/3]
template<typename T>
T & components::ComponentContext::FindComponent |
( |
std::string_view | = {} | ) |
|
|
inline |
◆ FindComponentOptional() [1/3]
template<typename T>
T * components::ComponentContext::FindComponentOptional |
( |
| ) |
const |
|
inline |
◆ FindComponentOptional() [2/3]
template<typename T>
T * components::ComponentContext::FindComponentOptional |
( |
std::string_view | name | ) |
const |
|
inline |
◆ FindComponentOptional() [3/3]
template<typename T>
T & components::ComponentContext::FindComponentOptional |
( |
std::string_view | = {} | ) |
|
|
inline |
◆ GetComponentName()
std::string_view components::ComponentContext::GetComponentName |
( |
| ) |
const |
Returns the current component name. This is helpful in cases where multiple instances of the component class may be created using component_list.Append<T>("custom-name")
syntax.
- Warning
- The lifetime of the returned string ends as soon as the current component's constructor completes. Store it as an
std::string
if needed.
◆ GetTaskProcessor()
template<typename T>
engine::TaskProcessor & components::ComponentContext::GetTaskProcessor |
( |
const T & | | ) |
|
|
inline |
The documentation for this class was generated from the following file: