void PeerConnectionMedia::RollbackIceRestart_s() { ASSERT_ON_THREAD(mSTSThread); // hold the restart context so we can disconnect signals RefPtr<NrIceCtx> restartCtx = mIceCtxHdlr->ctx(); // restore old streams since we're rolling back for (auto& transportFlow : mTransportFlows) { RefPtr<TransportFlow> aFlow = transportFlow.second; if (!aFlow) continue; TransportLayerIce* ice = static_cast<TransportLayerIce*>(aFlow->GetLayer(TransportLayerIce::ID())); ice->RestoreOldStream(); } mIceCtxHdlr->RollbackIceRestart(); ConnectSignals(mIceCtxHdlr->ctx().get(), restartCtx.get()); // Fixup the telemetry by transferring abandoned ctx stats to current ctx. NrIceStats stats = restartCtx->Destroy(); restartCtx = nullptr; mIceCtxHdlr->ctx()->AccumulateStats(stats); }
void PeerConnectionMedia::RollbackIceRestart_s() { ASSERT_ON_THREAD(mSTSThread); // hold the restart context so we can disconnect signals RefPtr<NrIceCtx> restartCtx = mIceCtxHdlr->ctx(); // restore old streams since we're rolling back for (auto i = mTransportFlows.begin(); i != mTransportFlows.end(); ++i) { RefPtr<TransportFlow> aFlow = i->second; if (!aFlow) continue; TransportLayerIce* ice = static_cast<TransportLayerIce*>(aFlow->GetLayer(TransportLayerIce::ID())); ice->RestoreOldStream(); } mIceCtxHdlr->RollbackIceRestart(); ConnectSignals(mIceCtxHdlr->ctx().get(), restartCtx.get()); }