Skip to content

Commit fb240d3

Browse files
committed
Manage DataModel::Provider lifecycle in DeviceControllerFactory
* On Shutdown call InteractionModelEngine::SetDataModelProvider with nullptr * Cache DataModel::Provider within DeviceControllerFactory to allow it it reinitialize.
1 parent ba864e9 commit fb240d3

File tree

2 files changed

+5
-4
lines changed

2 files changed

+5
-4
lines changed

src/controller/CHIPDeviceControllerFactory.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,7 @@ CHIP_ERROR DeviceControllerFactory::ReinitSystemStateIfNecessary()
102102
params.opCertStore = mOpCertStore;
103103
params.certificateValidityPolicy = mCertificateValidityPolicy;
104104
params.sessionResumptionStorage = mSessionResumptionStorage;
105-
106-
// re-initialization keeps any previously initialized values. The only place where
107-
// a provider exists is in the InteractionModelEngine, so just say "keep it as is".
108-
params.dataModelProvider = app::InteractionModelEngine::GetInstance()->GetDataModelProvider();
105+
params.dataModelProvider = mDataModelProvider;
109106

110107
return InitSystemState(params);
111108
}
@@ -353,6 +350,7 @@ CHIP_ERROR DeviceControllerFactory::InitSystemState(FactoryInitParams params)
353350
// store the system state
354351
mSystemState = chip::Platform::New<DeviceControllerSystemState>(std::move(stateParams));
355352
mSystemState->SetTempFabricTable(tempFabricTable, params.enableServerInteractions);
353+
mDataModelProvider = params.dataModelProvider;
356354
ChipLogDetail(Controller, "System State Initialized...");
357355
return CHIP_NO_ERROR;
358356
}
@@ -481,6 +479,8 @@ void DeviceControllerFactory::Shutdown()
481479
mOpCertStore = nullptr;
482480
mCertificateValidityPolicy = nullptr;
483481
mSessionResumptionStorage = nullptr;
482+
483+
chip::app::InteractionModelEngine::GetInstance()->SetDataModelProvider(nullptr);
484484
}
485485

486486
void DeviceControllerSystemState::Shutdown()

src/controller/CHIPDeviceControllerFactory.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,7 @@ class DeviceControllerFactory
313313
Credentials::OperationalCertificateStore * mOpCertStore = nullptr;
314314
Credentials::CertificateValidityPolicy * mCertificateValidityPolicy = nullptr;
315315
SessionResumptionStorage * mSessionResumptionStorage = nullptr;
316+
app::DataModel::Provider * mDataModelProvider = nullptr;
316317
bool mEnableServerInteractions = false;
317318
};
318319

0 commit comments

Comments
 (0)