#include "./participation.hpp" #include "./chunk_picker.hpp" bool addParticipation(Contact3Handle c, ObjectHandle o) { bool was_new {false}; if (static_cast(o)) { const auto [_, inserted] = o.get_or_emplace().participants.emplace(c); was_new = inserted; } if (static_cast(c)) { const auto [_, inserted] = c.get_or_emplace().participating.emplace(o); was_new = was_new || inserted; // TODO: if not have_all c.get_or_emplace().participating_unfinished.emplace(o, ChunkPicker::ParticipationEntry{}); } return was_new; } void removeParticipation(Contact3Handle c, ObjectHandle o) { if (static_cast(o) && o.all_of()) { o.get().participants.erase(c); } if (static_cast(c) && c.all_of()) { c.get().participating.erase(o); c.get().participating_unfinished.erase(o); } }