namespace launchpad {
-static const char PATH_CONF[] = "/usr/share/aul/app-defined-loader.conf";
-static const char SECTION_MEMORY[] = "Memory";
-static const char KEY_THRESHOLD[] = "Threshold";
-static uint32_t DEFAULT_THRESHOLD = 25600; // kB
+namespace {
+const char PATH_CONF[] = "/usr/share/aul/app-defined-loader.conf";
+const char SECTION_MEMORY[] = "Memory";
+const char KEY_THRESHOLD[] = "Threshold";
+const uint32_t DEFAULT_THRESHOLD = 25600; // kB
+} // namespace
class AppDefinedLoader {
public:
- AppDefinedLoader(int argc, char** argv)
- : argc_(argc), argv_(argv) {
- lifecycle_cb_ = std::shared_ptr<loader_lifecycle_callback_s>(
- new loader_lifecycle_callback_s());
+ AppDefinedLoader(int argc, char** argv) : argc_(argc), argv_(argv) {
+ lifecycle_cb_ = std::make_shared<loader_lifecycle_callback_s>();
lifecycle_cb_->create = OnCreate;
lifecycle_cb_->launch = OnLaunch;
lifecycle_cb_->terminate = OnTerminate;
- adapter_ = std::shared_ptr<loader_adapter_s>(new loader_adapter_s());
+ adapter_ = std::make_shared<loader_adapter_s>();
adapter_->loop_begin = OnLoopBegin;
adapter_->loop_quit = OnLoopQuit;
adapter_->add_fd = OnAddFd;
adapter_->remove_fd = OnRemoveFd;
- proc_ = std::unique_ptr<Proc>(new Proc(getpid()));
-
+ proc_ = std::make_unique<Proc>(getpid());
Config conf(PATH_CONF);
int threshold = conf.GetIntValue(SECTION_MEMORY, KEY_THRESHOLD);
- if (threshold > 0) {
+ if (threshold > 0)
threshold_ = static_cast<uint32_t>(threshold);
- } else {
+ else
_W("Failed to get threshold");
- }
}
~AppDefinedLoader() {
strerror_r(errno, err_str, sizeof(err_str)));
} else {
SECURE_LOGD("[candidate] Exec application (%s)",
- argv_[LOADER_ARG_PATH]);
+ argv_[LOADER_ARG_PATH]);
_close_all_fds();
if (!libdir.empty())
setenv("LD_LIBRARY_PATH", libdir.c_str(), 1);
}
int DoDlOpen(bool restore, std::string old_cwd, std::string libdir) {
- std::string hwc_message = "" + std::to_string(getpid()) +
- "|lib loading start";
+ std::string hwc_message = std::to_string(getpid()) + "|lib loading start";
prctl(PR_TASK_PERF_USER_TRACE, hwc_message.c_str(), hwc_message.size());
_W("dlopen(%s) ++", argv_[LOADER_ARG_PATH]);
void* handle = dlopen(argv_[LOADER_ARG_PATH],
return -1;
}
- hwc_message = "" + std::to_string(getpid()) + "|lib loading end";
+ hwc_message = std::to_string(getpid()) + "|lib loading end";
prctl(PR_TASK_PERF_USER_TRACE, hwc_message.c_str(), hwc_message.size());
if (restore && chdir(old_cwd.c_str()))
_E("failed to chdir: %d", errno);
- auto dl_main = reinterpret_cast<int (*)(int, char **)>(
+ auto dl_main = reinterpret_cast<int (*)(int, char**)>(
dlsym(handle, "main"));
if (dl_main == nullptr) {
_E("dlsym not founded(%s). Please export 'main' function", dlerror());
Config(const std::string& path);
virtual ~Config();
- public:
int GetIntValue(const std::string& section, const std::string& key) const;
private:
#define LOADERS_DIRECTORY_PATH "/opt/share/loaders/"
-using namespace std;
namespace launchpad_parser_plugin {
-string LaunchpadParser::GetFilePath(string id) {
+std::string LaunchpadParser::GetFilePath(std::string id) {
return "/opt/share/loaders/" + id + ".loader";
}
-int LaunchpadParser::WriteToFile(string pkgid) {
+int LaunchpadParser::WriteToFile(std::string pkgid) {
if (access(LOADERS_DIRECTORY_PATH, F_OK) != 0)
mkdir(LOADERS_DIRECTORY_PATH, 0644);
out_file << "APP_TYPE capp|c++app \n";
out_file << "DETECTION_METHOD TIMEOUT|VISIBILITY \n";
out_file << "TIMEOUT 5000 \n";
- out_file << "TTL " + to_string(i->GetTimeToLive()) + "\n";
+ out_file << "TTL " + std::to_string(i->GetTimeToLive()) + "\n";
out_file << "OWNER " + pkgid + "\n";
out_file << "EXTRA loader_type common-loader \n";
if (i->GetPreloadLib().size() > 0) {
return 0;
}
-bool LaunchpadParser::IsValidId(string loader_id, string pkgid) {
+bool LaunchpadParser::IsValidId(std::string loader_id, std::string pkgid) {
std::string needle("../");
- std::size_t found = loader_id.find(needle);
+ size_t found = loader_id.find(needle);
if (found != std::string::npos) {
_E("Invalid loader_id(%s)", loader_id.c_str());
return false;
}
- ifstream in_file(GetFilePath(loader_id).c_str());
+ std::ifstream in_file(GetFilePath(loader_id).c_str());
if (!in_file.good())
return true;
- string key, val;
+ std::string key, val;
in_file >> key;
while (in_file >> key >> val) {
if (key == "OWNER") {
return false;
}
-int LaunchpadParser::Install(xmlDocPtr doc, string pkgid) {
+int LaunchpadParser::Install(xmlDocPtr doc, std::string pkgid) {
pkgmgr_privilege_level level;
pkgmgr_installer_info_get_privilege_level(&level);
if (level != PM_PRIVILEGE_PLATFORM) {
if (!node->name)
continue;
- string name = string((char*)node->name);
+ std::string name = std::string(reinterpret_cast<const char*>(node->name));
if (name != "provides-appdefined-loader")
continue;
- xmlChar* val = xmlGetProp(node, (const xmlChar *)"id");
- shared_ptr<LoaderInfo> info = make_shared<LoaderInfo>(string((char*)val));
+ xmlChar* val = xmlGetProp(node, reinterpret_cast<const xmlChar*>("id"));
+ std::shared_ptr<LoaderInfo> info =
+ std::make_shared<LoaderInfo>(std::string(reinterpret_cast<char*>(val)));
if (!IsValidId(info->GetId(), pkgid))
return -1;
- xmlChar* ttl = xmlGetProp(node, (const xmlChar *)"time-to-live");
+ xmlChar* ttl = xmlGetProp(node,
+ reinterpret_cast<const xmlChar*>("time-to-live"));
if (ttl)
- info->SetTimeToLive(stoi(string((char*)ttl)));
+ info->SetTimeToLive(std::stoi(std::string(reinterpret_cast<char*>(ttl))));
for (xmlNode* iter = node->children; iter; iter = iter->next) {
if (!iter->name)
continue;
- string child_name = string((char*)iter->name);
+ std::string child_name =
+ std::string(reinterpret_cast<const char*>(iter->name));
if (child_name == "preload-library") {
- xmlChar* libname = xmlGetProp(iter, (const xmlChar *)"name");
+ xmlChar* libname = xmlGetProp(iter,
+ reinterpret_cast<const xmlChar*>("name"));
if (!libname)
continue;
- info->AddPreloadLib(string((char*)libname));
+ info->AddPreloadLib(std::string(reinterpret_cast<char*>(libname)));
}
}
loader_list_.push_back(info);
if (!node->name)
continue;
- string name = string((char*)node->name);
+ std::string name = std::string(reinterpret_cast<const char*>(node->name));
if (name != "provides-appdefined-loader")
continue;
- xmlChar* val = xmlGetProp(node, (const xmlChar *)"id");
+ xmlChar* val = xmlGetProp(node, reinterpret_cast<const xmlChar*>("id"));
if (!val)
return -1;
- string id = string((char*)val);
+ std::string id = std::string(reinterpret_cast<char*>(val));
if (!IsValidId(id, pkgid))
- return -1;
+ return -1;
remove(GetFilePath(id).c_str());
}
return 0;
#include "launchpad-parser/loader_info.hh"
-using namespace std;
namespace launchpad_parser_plugin {
-LoaderInfo::LoaderInfo(std::string id) : id_(id), time_to_live_(0) {
+LoaderInfo::LoaderInfo(std::string id) : id_(std::move(id)), time_to_live_(0) {
}
-string LoaderInfo::GetId() {
+std::string LoaderInfo::GetId() {
return id_;
}
time_to_live_ = time;
}
-list<string> LoaderInfo::GetPreloadLib() {
+const std::list<std::string>& LoaderInfo::GetPreloadLib() {
return preload_lib_list_;
}
-void LoaderInfo::AddPreloadLib(string lib_name) {
- preload_lib_list_.push_back(lib_name);
+void LoaderInfo::AddPreloadLib(std::string lib_name) {
+ preload_lib_list_.push_back(std::move(lib_name));
}
} // namspace launchpad_parser_plugin
std::string GetId();
int GetTimeToLive();
void SetTimeToLive(int time);
- std::list<std::string> GetPreloadLib();
+ const std::list<std::string>& GetPreloadLib();
void AddPreloadLib(std::string lib_name);
private: