Skip to content

mobile: introduce ClientEngineBuilder class#42997

Closed
wlampert wants to merge 1 commit intoenvoyproxy:mainfrom
wlampert:envoy-client
Closed

mobile: introduce ClientEngineBuilder class#42997
wlampert wants to merge 1 commit intoenvoyproxy:mainfrom
wlampert:envoy-client

Conversation

@wlampert
Copy link
Copy Markdown
Contributor

Commit Message: This PR introduces a new ClientEngineBuilder class. This class is a variant of the existing EngineBuilder class that provides a more configurable bootstrap via its exposed API but is similarly used to create an engine. The ClientEngineBuilder requires the user to provide their own cluster and route configuration, giving the user more control over the client's behavior. This client is not intended to be used in mobile environments and does not provide support for XDS as of now.

Additional Description: N/A
Risk Level: Low - this is a new, separate client and should not affect Envoy or Envoy Mobile.
Testing: Unit and integration are included in this PR. I also conducted manual testing using the client in a staging environment to send requests to an Envoy Server.
Docs Changes: N/A
Release Notes: N/A
Platform Specific Features: N/A

variant of the existing EngineBuilder class that provides a more
configurable boostrap via its exposed API, but is similarly used to
create an engine. The ClientEngineBuilder requires the user to provide
their own cluster and route configuration, giving the user more control
over the client's behavior. This client is not intended to be used in
mobile environments and does not provide support for XDS as of now.

Signed-off-by: Will Lampert <wlampert@google.com>
@wlampert wlampert marked this pull request as draft January 14, 2026 03:14
Comment on lines +96 to +123
Logger::Logger::Levels log_level_ = Logger::Logger::Levels::info;
std::unique_ptr<EnvoyLogger> logger_ = nullptr;
bool enable_logger_ = false;
std::unique_ptr<EngineCallbacks> callbacks_ = nullptr;
std::unique_ptr<EnvoyEventTracker> event_tracker_ = nullptr;

int stream_idle_timeout_seconds_ = 15;
absl::optional<int> network_thread_priority_ = absl::nullopt;
absl::optional<size_t> high_watermark_ = absl::nullopt;

absl::flat_hash_map<std::string, KeyValueStoreSharedPtr> key_value_stores_ = {};

std::vector<envoy::extensions::filters::network::http_connection_manager::v3::HttpFilter > hcm_http_filters_ = {};
std::vector<envoy::config::cluster::v3::Cluster> clusters_ = {};
std::unique_ptr<envoy::config::route::v3::RouteConfiguration> route_configuration_ = nullptr;
uint32_t per_connection_buffer_limit_bytes_ = 10 * 1024 * 1024;
std::vector<std::string> stats_prefixes_ = {};
std::optional<envoy::config::bootstrap::v3::Watchdogs> watchdog_ = std::nullopt;
std::optional<envoy::extensions::filters::http::router::v3::Router> router_config_ = std::nullopt;

std::vector<std::pair<std::string, bool>> runtime_guards_ = {};
std::vector<std::pair<std::string, bool>> restart_runtime_guards_ = {};
absl::flat_hash_map<std::string, StringAccessorSharedPtr> string_accessors_ = {};

std::string node_id_ = "";
absl::optional<NodeLocality> node_locality_ = absl::nullopt;
absl::optional<Protobuf::Struct> node_metadata_ = absl::nullopt;
bool enable_stats_collection_ = false;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some of these knobes are already present in the common engine builder. I'm wondering if we can extend that engine builder's config generation part instead of writer a new engine builder.

@wlampert wlampert closed this Feb 9, 2026
@wlampert wlampert deleted the envoy-client branch February 12, 2026 17:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants