void Engine::RemoveConnectionEndpoint()

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);
    }
  }
}