in NearbyConnectionsCpp/app/src/main/cpp/NearbyConnection.cpp [538:566]
void Engine::RemoveConnectionEndpoint(std::string const &remote_endpoint_id,
bool need_broadcast) {
auto it = players_score_.find(remote_endpoint_id);
if (it != players_score_.end()) {
it->second.finished_ = true;
it->second.connected_ = false;
}
if (need_broadcast && it->second.is_host_) {
// build up array of the connected endpoints to me DIRECTLY
std::vector<std::string> endpoints;
for (it = players_score_.begin(); it != players_score_.end(); ++it) {
if (it->second.connected_ && it->second.is_direct_connection_ &&
it->second.is_host_ &&
it->first != remote_endpoint_id) {
endpoints.push_back(it->first);
}
}
if (endpoints.size()) {
std::vector<uint8_t> payload;
payload.resize(PAYLOAD_HEADER_LENGTH + remote_endpoint_id.size());
payload[0] = (uint8_t)PAYLOAD_HEADER_DISCONNECTED;
memcpy(&(payload[1]), remote_endpoint_id.c_str(),
remote_endpoint_id.size());
nearby_connection_->SendReliableMessage(endpoints, payload);
}
}
}