Check system commands for result and return error if needed
This commit is contained in:
parent
fce7466ff9
commit
a06628835b
2 changed files with 24 additions and 3 deletions
|
|
@ -37,6 +37,17 @@ PlatformApi::PlatformApi() {
|
||||||
PlatformApi::~PlatformApi() {
|
PlatformApi::~PlatformApi() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PlatformApi::wait_for_process(core::posix::ChildProcess &process,
|
||||||
|
anbox::protobuf::bridge::Void *response) {
|
||||||
|
const auto result = process.wait_for(core::posix::wait::Flags::untraced);
|
||||||
|
if (result.status != core::posix::wait::Result::Status::exited ||
|
||||||
|
result.detail.if_exited.status != core::posix::exit::Status::success) {
|
||||||
|
response->set_error("Failed to install application");
|
||||||
|
// FIXME once we add proper error codes/domains we need to add structured error
|
||||||
|
// info the response here.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void PlatformApi::install_application(anbox::protobuf::bridge::InstallApplication const *request,
|
void PlatformApi::install_application(anbox::protobuf::bridge::InstallApplication const *request,
|
||||||
anbox::protobuf::bridge::Void *response,
|
anbox::protobuf::bridge::Void *response,
|
||||||
google::protobuf::Closure *done) {
|
google::protobuf::Closure *done) {
|
||||||
|
|
@ -49,7 +60,7 @@ void PlatformApi::install_application(anbox::protobuf::bridge::InstallApplicatio
|
||||||
};
|
};
|
||||||
|
|
||||||
auto process = core::posix::exec("/system/bin/sh", argv, common_env, core::posix::StandardStream::empty);
|
auto process = core::posix::exec("/system/bin/sh", argv, common_env, core::posix::StandardStream::empty);
|
||||||
process.wait_for(core::posix::wait::Flags::untraced);
|
wait_for_process(process, response);
|
||||||
|
|
||||||
done->Run();
|
done->Run();
|
||||||
}
|
}
|
||||||
|
|
@ -70,7 +81,7 @@ void PlatformApi::launch_application(anbox::protobuf::bridge::LaunchApplication
|
||||||
};
|
};
|
||||||
|
|
||||||
auto process = core::posix::exec("/system/bin/sh", argv, common_env, core::posix::StandardStream::empty);
|
auto process = core::posix::exec("/system/bin/sh", argv, common_env, core::posix::StandardStream::empty);
|
||||||
process.wait_for(core::posix::wait::Flags::untraced);
|
wait_for_process(process, response);
|
||||||
|
|
||||||
done->Run();
|
done->Run();
|
||||||
}
|
}
|
||||||
|
|
@ -91,7 +102,7 @@ void PlatformApi::set_dns_servers(anbox::protobuf::bridge::SetDnsServers const *
|
||||||
argv.push_back(request->servers(n).address());
|
argv.push_back(request->servers(n).address());
|
||||||
|
|
||||||
auto process = core::posix::exec("/system/bin/ndc", argv, common_env, core::posix::StandardStream::empty);
|
auto process = core::posix::exec("/system/bin/ndc", argv, common_env, core::posix::StandardStream::empty);
|
||||||
process.wait_for(core::posix::wait::Flags::untraced);
|
wait_for_process(process, response);
|
||||||
|
|
||||||
done->Run();
|
done->Run();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,12 @@ class Closure;
|
||||||
} // namespace protobuf
|
} // namespace protobuf
|
||||||
} // namespace google
|
} // namespace google
|
||||||
|
|
||||||
|
namespace core {
|
||||||
|
namespace posix {
|
||||||
|
class ChildProcess;
|
||||||
|
} // posix
|
||||||
|
} // core
|
||||||
|
|
||||||
namespace anbox {
|
namespace anbox {
|
||||||
namespace protobuf {
|
namespace protobuf {
|
||||||
namespace bridge {
|
namespace bridge {
|
||||||
|
|
@ -50,6 +56,10 @@ public:
|
||||||
void set_dns_servers(anbox::protobuf::bridge::SetDnsServers const *request,
|
void set_dns_servers(anbox::protobuf::bridge::SetDnsServers const *request,
|
||||||
anbox::protobuf::bridge::Void *response,
|
anbox::protobuf::bridge::Void *response,
|
||||||
google::protobuf::Closure *done);
|
google::protobuf::Closure *done);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void wait_for_process(core::posix::ChildProcess &process,
|
||||||
|
anbox::protobuf::bridge::Void *response);
|
||||||
};
|
};
|
||||||
} // namespace android
|
} // namespace android
|
||||||
} // namespace anbox
|
} // namespace anbox
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue