adb: convert more stuff to unique_fd.
Test: adb_test
Test: adbd_test
Test: test_device.py
Change-Id: Ie75f0b811d2c75d508e6ecffb40579308f5789d0
diff --git a/adb/services.cpp b/adb/services.cpp
index 73fed09..0061f0e 100644
--- a/adb/services.cpp
+++ b/adb/services.cpp
@@ -71,7 +71,7 @@
return unique_fd(s[0]);
}
-int service_to_fd(std::string_view name, atransport* transport) {
+unique_fd service_to_fd(std::string_view name, atransport* transport) {
unique_fd ret;
if (is_socket_spec(name)) {
@@ -86,9 +86,9 @@
}
if (ret >= 0) {
- close_on_exec(ret);
+ close_on_exec(ret.get());
}
- return ret.release();
+ return ret;
}
#if ADB_HOST
@@ -99,9 +99,7 @@
ConnectionState state;
};
-static void wait_for_state(int fd, void* data) {
- std::unique_ptr<state_info> sinfo(reinterpret_cast<state_info*>(data));
-
+static void wait_for_state(int fd, state_info* sinfo) {
D("wait_for_state %d", sinfo->state);
while (true) {
@@ -197,7 +195,7 @@
} else if (android::base::StartsWith(name, "wait-for-")) {
name += strlen("wait-for-");
- std::unique_ptr<state_info> sinfo = std::make_unique<state_info>();
+ std::shared_ptr<state_info> sinfo = std::make_shared<state_info>();
if (sinfo == nullptr) {
fprintf(stderr, "couldn't allocate state_info: %s", strerror(errno));
return nullptr;
@@ -233,19 +231,15 @@
return nullptr;
}
- int fd = create_service_thread(
- "wait", std::bind(wait_for_state, std::placeholders::_1, sinfo.get()))
- .release();
- if (fd != -1) {
- sinfo.release();
- }
- return create_local_socket(fd);
+ unique_fd fd = create_service_thread("wait", [sinfo](int fd) {
+ wait_for_state(fd, sinfo.get());
+ });
+ return create_local_socket(std::move(fd));
} else if (!strncmp(name, "connect:", 8)) {
std::string host(name + strlen("connect:"));
- int fd = create_service_thread("connect",
- std::bind(connect_service, std::placeholders::_1, host))
- .release();
- return create_local_socket(fd);
+ unique_fd fd = create_service_thread(
+ "connect", std::bind(connect_service, std::placeholders::_1, host));
+ return create_local_socket(std::move(fd));
}
return nullptr;
}