Mercurial > minori
view dep/animia/src/animia.cc @ 147:6fdf0632c003
track: use a bit of a more sane way to manage recognition
it also works with the new animia API
author | Paper <mrpapersonic@gmail.com> |
---|---|
date | Tue, 14 Nov 2023 13:19:40 -0500 |
parents | d8a61e7e2a36 |
children | aa4df5a84338 |
line wrap: on
line source
#include <string> #include <vector> #include <set> #include "animia.h" #include "animia/strategies.h" #include "animia/types.h" #include "animia/fd.h" namespace animia { static bool ProcessInPlayers(const std::vector<Player>& players, const std::string& name, Player& player_) { for (const auto& player : players) { for (const auto& exe : player.executables) { if (exe == name.substr(0, name.rfind(".exe"))) { player_ = player; return true; } } } return false; } bool GetResults(const std::vector<Player>& players, std::vector<Result>& results) { std::set<internal::pid_t> pids; if (!internal::fd.GetAllPids(pids)) return false; for (const auto& pid : pids) { std::string name; internal::fd.GetProcessName(pid, name); Player player; if (!ProcessInPlayers(players, name, player)) continue; Result result; result.process.pid = pid; result.process.name = name; result.player = player; results.push_back(result); } return internal::ApplyStrategies(results); } }