35 lines
856 B
C++
35 lines
856 B
C++
#pragma once
|
|
|
|
#include <cassert>
|
|
#include <string>
|
|
|
|
#include "common/params.h"
|
|
#include "common/util.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());
|
|
}
|
|
system(util::string_format("rm %s -rf", msgq_path.c_str()).c_str());
|
|
unsetenv("OPENPILOT_PREFIX");
|
|
}
|
|
|
|
private:
|
|
std::string msgq_path;
|
|
};
|