Use the config to control adb subprocesses.
Test: build and run locally
Bug: 123592422
Change-Id: Idbc51260de38762de564d92971f874bf61063d5c
diff --git a/host/commands/launch/main.cc b/host/commands/launch/main.cc
index 9ebb926..d985529 100644
--- a/host/commands/launch/main.cc
+++ b/host/commands/launch/main.cc
@@ -241,7 +241,7 @@
}
bool AdbVsockTunnelEnabled(const vsoc::CuttlefishConfig& config) {
- return FLAGS_vsock_guest_cid > 2
+ return config.vsock_guest_cid() > 2
&& AdbModeEnabled(config, kAdbModeVsockTunnel);
}
@@ -257,7 +257,7 @@
}
bool AdbConnectorEnabled(const vsoc::CuttlefishConfig& config) {
- return FLAGS_run_adb_connector
+ return config.run_adb_connector()
&& (AdbTunnelEnabled(config) || AdbVsockTunnelEnabled(config));
}
@@ -283,7 +283,7 @@
<< usb_v1_server->StrError();
std::exit(cvd::LauncherExitCodes::kUsbV1SocketError);
}
- cvd::Command usb_server(FLAGS_virtual_usb_manager_binary);
+ cvd::Command usb_server(config.virtual_usb_manager_binary());
usb_server.AddParameter("-usb_v1_fd=", usb_v1_server);
process_monitor->StartSubprocess(std::move(usb_server),
GetOnSubprocessExitCallback(config));
@@ -401,7 +401,7 @@
void LaunchAdbConnectorIfEnabled(cvd::ProcessMonitor* process_monitor,
const vsoc::CuttlefishConfig& config) {
if (AdbConnectorEnabled(config)) {
- cvd::Command adb_connector(FLAGS_adb_connector_binary);
+ cvd::Command adb_connector(config.adb_connector_binary());
adb_connector.AddParameter(GetAdbConnectorPortArg());
process_monitor->StartSubprocess(std::move(adb_connector),
GetOnSubprocessExitCallback(config));
@@ -411,7 +411,7 @@
void LaunchSocketForwardProxyIfEnabled(cvd::ProcessMonitor* process_monitor,
const vsoc::CuttlefishConfig& config) {
if (AdbTunnelEnabled(config)) {
- cvd::Command adb_tunnel(FLAGS_socket_forward_proxy_binary);
+ cvd::Command adb_tunnel(config.socket_forward_proxy_binary());
adb_tunnel.AddParameter(GetGuestPortArg());
adb_tunnel.AddParameter(GetHostPortArg());
process_monitor->StartSubprocess(std::move(adb_tunnel),
@@ -422,7 +422,7 @@
void LaunchSocketVsockProxyIfEnabled(cvd::ProcessMonitor* process_monitor,
const vsoc::CuttlefishConfig& config) {
if (AdbVsockTunnelEnabled(config)) {
- cvd::Command adb_tunnel(FLAGS_socket_vsock_proxy_binary);
+ cvd::Command adb_tunnel(config.socket_vsock_proxy_binary());
adb_tunnel.AddParameter("--guest_port=5555");
adb_tunnel.AddParameter(
std::string{"--host_port="} + std::to_string(GetHostPort()));
@@ -643,6 +643,13 @@
tmp_config_obj.set_stream_audio_port(FLAGS_stream_audio_port);
tmp_config_obj.set_restart_subprocesses(FLAGS_restart_subprocesses);
+ tmp_config_obj.set_run_adb_connector(FLAGS_run_adb_connector);
+ tmp_config_obj.set_adb_connector_binary(FLAGS_adb_connector_binary);
+ tmp_config_obj.set_virtual_usb_manager_binary(
+ FLAGS_virtual_usb_manager_binary);
+ tmp_config_obj.set_socket_forward_proxy_binary(
+ FLAGS_socket_forward_proxy_binary);
+ tmp_config_obj.set_socket_vsock_proxy_binary(FLAGS_socket_vsock_proxy_binary);
if(!AdbUsbEnabled(tmp_config_obj)) {
tmp_config_obj.disable_usb_adb();
diff --git a/host/libs/config/cuttlefish_config.cpp b/host/libs/config/cuttlefish_config.cpp
index 620f9eb..59f2d4a 100644
--- a/host/libs/config/cuttlefish_config.cpp
+++ b/host/libs/config/cuttlefish_config.cpp
@@ -132,6 +132,11 @@
const char* kStreamAudioPort = "stream_audio_port";
const char* kRestartSubprocesses = "restart_subprocesses";
+const char* kRunAdbConnector = "run_adb_connector";
+const char* kAdbConnectorBinary = "adb_connector_binary";
+const char* kVirtualUsbManagerBinary = "virtual_usb_manager_binary";
+const char* kSocketForwardProxyBinary = "socket_forward_proxy_binary";
+const char* kSocketVsockProxyBinary = "socket_vsock_proxy_binary";
} // namespace
namespace vsoc {
@@ -610,6 +615,50 @@
(*dictionary_)[kRestartSubprocesses] = restart_subprocesses;
}
+bool CuttlefishConfig::run_adb_connector() const {
+ return (*dictionary_)[kRestartSubprocesses].asBool();
+}
+
+void CuttlefishConfig::set_run_adb_connector(bool run_adb_connector) {
+ (*dictionary_)[kRunAdbConnector] = run_adb_connector;
+}
+
+std::string CuttlefishConfig::adb_connector_binary() const {
+ return (*dictionary_)[kAdbConnectorBinary].asString();
+}
+
+void CuttlefishConfig::set_adb_connector_binary(
+ const std::string& adb_connector_binary) {
+ (*dictionary_)[kAdbConnectorBinary] = adb_connector_binary;
+}
+
+std::string CuttlefishConfig::virtual_usb_manager_binary() const {
+ return (*dictionary_)[kVirtualUsbManagerBinary].asString();
+}
+
+void CuttlefishConfig::set_virtual_usb_manager_binary(
+ const std::string& virtual_usb_manager_binary) {
+ (*dictionary_)[kVirtualUsbManagerBinary] = virtual_usb_manager_binary;
+}
+
+std::string CuttlefishConfig::socket_forward_proxy_binary() const {
+ return (*dictionary_)[kSocketForwardProxyBinary].asString();
+}
+
+void CuttlefishConfig::set_socket_forward_proxy_binary(
+ const std::string& socket_forward_proxy_binary) {
+ (*dictionary_)[kSocketForwardProxyBinary] = socket_forward_proxy_binary;
+}
+
+std::string CuttlefishConfig::socket_vsock_proxy_binary() const {
+ return (*dictionary_)[kSocketVsockProxyBinary].asString();
+}
+
+void CuttlefishConfig::set_socket_vsock_proxy_binary(
+ const std::string& socket_vsock_proxy_binary) {
+ (*dictionary_)[kSocketVsockProxyBinary] = socket_vsock_proxy_binary;
+}
+
// Creates the (initially empty) config object and populates it with values from
// the config file if the CUTTLEFISH_CONFIG_FILE env variable is present.
// Returns nullptr if there was an error loading from file
diff --git a/host/libs/config/cuttlefish_config.h b/host/libs/config/cuttlefish_config.h
index 3c3c4de..c5d5aff 100644
--- a/host/libs/config/cuttlefish_config.h
+++ b/host/libs/config/cuttlefish_config.h
@@ -233,6 +233,21 @@
void set_restart_subprocesses(bool restart_subprocesses);
bool restart_subprocesses() const;
+ void set_run_adb_connector(bool run_adb_connector);
+ bool run_adb_connector() const;
+
+ void set_adb_connector_binary(const std::string& adb_connector_binary);
+ std::string adb_connector_binary() const;
+
+ void set_virtual_usb_manager_binary(const std::string& binary);
+ std::string virtual_usb_manager_binary() const;
+
+ void set_socket_forward_proxy_binary(const std::string& binary);
+ std::string socket_forward_proxy_binary() const;
+
+ void set_socket_vsock_proxy_binary(const std::string& binary);
+ std::string socket_vsock_proxy_binary() const;
+
private:
std::unique_ptr<Json::Value> dictionary_;