void DefaultSignalingClient::UpdateTurnCredentials()

in chime-sdk-signaling-cpp/src/signaling/default_signaling_client.cc [349:376]


void DefaultSignalingClient::UpdateTurnCredentials(const signal_sdk::SdkJoinAckFrame& join_ack) {
  if (!join_ack.has_turn_credentials()) {
    CHIME_LOG(LogLevel::kError, "No turn credential exist")
    return;
  }

  const signal_sdk::SdkTurnCredentials& turn_creds = join_ack.turn_credentials();

  if (!turn_creds.has_username() || !turn_creds.has_password() || !turn_creds.has_ttl() ||
      turn_creds.uris_size() == 0) {
    CHIME_LOG(LogLevel::kError, "turn credential exist, but components missing")
    return;
  }

  std::chrono::system_clock::time_point now = std::chrono::system_clock::now();
  std::chrono::seconds ttl(turn_creds.ttl());
  turn_credentials_expire_time_ = now + ttl;

  std::vector<std::string> uris;
  for (const auto& uri : turn_creds.uris()) {
    uris.push_back(uri);
  }
  turn_credentials_.uris = uris;
  turn_credentials_.username = turn_creds.username();
  turn_credentials_.password = turn_creds.password();
  turn_credentials_.ttl = turn_creds.ttl();
  is_joined_ = true;
}