Add nonblocking version of GetLogName
Signed-off-by: Ravago Jones <ravagojones@gmail.com>
Change-Id: Ie91ac315bf659c4a85de1afe4fe6198c26ae747c
diff --git a/aos/logging/log_namer.cc b/aos/logging/log_namer.cc
index dfebe44..ed57caa 100644
--- a/aos/logging/log_namer.cc
+++ b/aos/logging/log_namer.cc
@@ -111,19 +111,19 @@
} // namespace
-std::string GetLogName(const char *basename) {
+std::optional<std::string> MaybeGetLogName(const char *basename) {
if (FLAGS_logging_folder.empty()) {
char folder[128];
{
char dev_name[8];
- while (!FindDevice(dev_name, sizeof(dev_name))) {
+ if (!FindDevice(dev_name, sizeof(dev_name))) {
LOG(INFO) << "Waiting for a device";
- sleep(5);
+ return std::nullopt;
}
snprintf(folder, sizeof(folder), "/media/%s1", dev_name);
- while (!FoundThumbDrive(folder)) {
+ if (!FoundThumbDrive(folder)) {
LOG(INFO) << "Waiting for" << folder;
- sleep(1);
+ return std::nullopt;
}
snprintf(folder, sizeof(folder), "/media/%s1/", dev_name);
}
@@ -164,5 +164,21 @@
return log_base_name;
}
+std::string GetLogName(const char *basename) {
+ std::optional<std::string> log_base_name;
+
+ while (true) {
+ log_base_name = MaybeGetLogName(basename);
+
+ if (log_base_name.has_value()) {
+ break;
+ }
+
+ sleep(5);
+ }
+
+ return log_base_name.value();
+}
+
} // namespace logging
} // namespace aos