Use std::unique_ptr to manage memory (#23168)
* use unique_ptr * trigger ci * move down loggerdstatepull/23195/head
parent
cfad1f35e8
commit
4aa291c406
|
@ -208,14 +208,14 @@ void can_send_thread(std::vector<Panda *> pandas, bool fake_send) {
|
|||
util::set_thread_name("boardd_can_send");
|
||||
|
||||
AlignedBuffer aligned_buf;
|
||||
Context * context = Context::create();
|
||||
SubSocket * subscriber = SubSocket::create(context, "sendcan");
|
||||
std::unique_ptr<Context> context(Context::create());
|
||||
std::unique_ptr<SubSocket> subscriber(SubSocket::create(context.get(), "sendcan"));
|
||||
assert(subscriber != NULL);
|
||||
subscriber->setTimeout(100);
|
||||
|
||||
// run as fast as messages come in
|
||||
while (!do_exit && check_all_connected(pandas)) {
|
||||
Message * msg = subscriber->receive();
|
||||
std::unique_ptr<Message> msg(subscriber->receive());
|
||||
if (!msg) {
|
||||
if (errno == EINTR) {
|
||||
do_exit = true;
|
||||
|
@ -223,23 +223,16 @@ void can_send_thread(std::vector<Panda *> pandas, bool fake_send) {
|
|||
continue;
|
||||
}
|
||||
|
||||
capnp::FlatArrayMessageReader cmsg(aligned_buf.align(msg));
|
||||
capnp::FlatArrayMessageReader cmsg(aligned_buf.align(msg.get()));
|
||||
cereal::Event::Reader event = cmsg.getRoot<cereal::Event>();
|
||||
|
||||
//Dont send if older than 1 second
|
||||
if (nanos_since_boot() - event.getLogMonoTime() < 1e9) {
|
||||
if (!fake_send) {
|
||||
for (const auto& panda : pandas) {
|
||||
panda->can_send(event.getSendcan());
|
||||
}
|
||||
if ((nanos_since_boot() - event.getLogMonoTime() < 1e9) && !fake_send) {
|
||||
for (const auto& panda : pandas) {
|
||||
panda->can_send(event.getSendcan());
|
||||
}
|
||||
}
|
||||
|
||||
delete msg;
|
||||
}
|
||||
|
||||
delete subscriber;
|
||||
delete context;
|
||||
}
|
||||
|
||||
void can_recv_thread(std::vector<Panda *> pandas) {
|
||||
|
@ -552,7 +545,7 @@ void pigeon_thread(Panda *panda) {
|
|||
PubMaster pm({"ubloxRaw"});
|
||||
bool ignition_last = false;
|
||||
|
||||
Pigeon *pigeon = Hardware::TICI() ? Pigeon::connect("/dev/ttyHS0") : Pigeon::connect(panda);
|
||||
std::unique_ptr<Pigeon> pigeon(Hardware::TICI() ? Pigeon::connect("/dev/ttyHS0") : Pigeon::connect(panda));
|
||||
|
||||
std::unordered_map<char, uint64_t> last_recv_time;
|
||||
std::unordered_map<char, int64_t> cls_max_dt = {
|
||||
|
@ -620,8 +613,6 @@ void pigeon_thread(Panda *panda) {
|
|||
// 10ms - 100 Hz
|
||||
util::sleep_for(10);
|
||||
}
|
||||
|
||||
delete pigeon;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
|
|
|
@ -17,14 +17,14 @@ int main() {
|
|||
|
||||
PubMaster pm({"ubloxGnss", "gpsLocationExternal"});
|
||||
|
||||
Context * context = Context::create();
|
||||
SubSocket * subscriber = SubSocket::create(context, "ubloxRaw");
|
||||
std::unique_ptr<Context> context(Context::create());
|
||||
std::unique_ptr<SubSocket> subscriber(SubSocket::create(context.get(), "ubloxRaw"));
|
||||
assert(subscriber != NULL);
|
||||
subscriber->setTimeout(100);
|
||||
|
||||
|
||||
while (!do_exit) {
|
||||
Message * msg = subscriber->receive();
|
||||
std::unique_ptr<Message> msg(subscriber->receive());
|
||||
if (!msg) {
|
||||
if (errno == EINTR) {
|
||||
do_exit = true;
|
||||
|
@ -32,7 +32,7 @@ int main() {
|
|||
continue;
|
||||
}
|
||||
|
||||
capnp::FlatArrayMessageReader cmsg(aligned_buf.align(msg));
|
||||
capnp::FlatArrayMessageReader cmsg(aligned_buf.align(msg.get()));
|
||||
cereal::Event::Reader event = cmsg.getRoot<cereal::Event>();
|
||||
auto ubloxRaw = event.getUbloxRaw();
|
||||
|
||||
|
@ -58,11 +58,7 @@ int main() {
|
|||
}
|
||||
bytes_consumed += bytes_consumed_this_time;
|
||||
}
|
||||
delete msg;
|
||||
}
|
||||
|
||||
delete subscriber;
|
||||
delete context;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -185,15 +185,14 @@ void loggerd_thread() {
|
|||
} QlogState;
|
||||
std::unordered_map<SubSocket*, QlogState> qlog_states;
|
||||
|
||||
LoggerdState s;
|
||||
s.ctx = Context::create();
|
||||
Poller * poller = Poller::create();
|
||||
std::unique_ptr<Context> ctx(Context::create());
|
||||
std::unique_ptr<Poller> poller(Poller::create());
|
||||
|
||||
// subscribe to all socks
|
||||
for (const auto& it : services) {
|
||||
if (!it.should_log) continue;
|
||||
|
||||
SubSocket * sock = SubSocket::create(s.ctx, it.name);
|
||||
SubSocket * sock = SubSocket::create(ctx.get(), it.name);
|
||||
assert(sock != NULL);
|
||||
poller->registerSocket(sock);
|
||||
qlog_states[sock] = {
|
||||
|
@ -203,6 +202,7 @@ void loggerd_thread() {
|
|||
};
|
||||
}
|
||||
|
||||
LoggerdState s;
|
||||
// init logger
|
||||
logger_init(&s.logger, "rlog", true);
|
||||
logger_rotate(&s);
|
||||
|
@ -266,6 +266,4 @@ void loggerd_thread() {
|
|||
|
||||
// messaging cleanup
|
||||
for (auto &[sock, qs] : qlog_states) delete sock;
|
||||
delete poller;
|
||||
delete s.ctx;
|
||||
}
|
||||
|
|
|
@ -108,7 +108,6 @@ const LogCameraInfo qcam_info = {
|
|||
};
|
||||
|
||||
struct LoggerdState {
|
||||
Context *ctx;
|
||||
LoggerState logger = {};
|
||||
char segment_path[4096];
|
||||
std::mutex rotate_lock;
|
||||
|
|
Loading…
Reference in New Issue