#pragma once #include #include #include "common/params.h" #include "common/util.h" #include "system/hardware/hw.h" class OpenpilotPrefix { public: OpenpilotPrefix(std::string prefix = {}) { if (prefix.empty()) { prefix = util::random_string(15); } msgq_path = "/dev/shm/" + prefix; bool ret = util::create_directories(msgq_path, 0777); assert(ret); setenv("OPENPILOT_PREFIX", prefix.c_str(), 1); } ~OpenpilotPrefix() { auto param_path = Params().getParamPath(); if (util::file_exists(param_path)) { std::string real_path = util::readlink(param_path); system(util::string_format("rm %s -rf", real_path.c_str()).c_str()); unlink(param_path.c_str()); } if (getenv("COMMA_CACHE") == nullptr) { system(util::string_format("rm %s -rf", Path::download_cache_root().c_str()).c_str()); } system(util::string_format("rm %s -rf", Path::comma_home().c_str()).c_str()); system(util::string_format("rm %s -rf", msgq_path.c_str()).c_str()); unsetenv("OPENPILOT_PREFIX"); } private: std::string msgq_path; };