Skip to content

Commit 3639ccb

Browse files
committed
Merge DeviceProxyInitParams with CASEClientInitParams
Both structures are almost the same and as we tend to pass more and more interfaces down the stack, translating between all the different structures becomes cumbersome.
1 parent ed1f910 commit 3639ccb

9 files changed

+37
-58
lines changed

src/app/CASEClient.h

+12-1
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,19 @@ struct CASEClientInitParams
3434
Messaging::ExchangeManager * exchangeMgr = nullptr;
3535
FabricTable * fabricTable = nullptr;
3636
Credentials::GroupDataProvider * groupDataProvider = nullptr;
37+
Optional<ReliableMessageProtocolConfig> mrpLocalConfig = Optional<ReliableMessageProtocolConfig>::Missing();
3738

38-
Optional<ReliableMessageProtocolConfig> mrpLocalConfig = Optional<ReliableMessageProtocolConfig>::Missing();
39+
CHIP_ERROR Validate() const
40+
{
41+
// sessionResumptionStorage can be nullptr when resumption is disabled.
42+
// certificateValidityPolicy is optional, too.
43+
ReturnErrorCodeIf(sessionManager == nullptr, CHIP_ERROR_INCORRECT_STATE);
44+
ReturnErrorCodeIf(exchangeMgr == nullptr, CHIP_ERROR_INCORRECT_STATE);
45+
ReturnErrorCodeIf(fabricTable == nullptr, CHIP_ERROR_INCORRECT_STATE);
46+
ReturnErrorCodeIf(groupDataProvider == nullptr, CHIP_ERROR_INCORRECT_STATE);
47+
48+
return CHIP_NO_ERROR;
49+
}
3950
};
4051

4152
class DLL_EXPORT CASEClient

src/app/CASESessionManager.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ void CASESessionManager::FindOrEstablishSession(const ScopedNodeId & peerId, Cal
4141
{
4242
ChipLogDetail(CASESessionManager, "FindOrEstablishSession: No existing OperationalSessionSetup instance found");
4343

44-
session = mConfig.sessionSetupPool->Allocate(mConfig.sessionInitParams, peerId, this);
44+
session = mConfig.sessionSetupPool->Allocate(mConfig.sessionInitParams, mConfig.clientPool, peerId, this);
4545

4646
if (session == nullptr)
4747
{
@@ -83,7 +83,7 @@ void CASESessionManager::UpdatePeerAddress(ScopedNodeId peerId)
8383
{
8484
ChipLogDetail(CASESessionManager, "UpdatePeerAddress: No existing OperationalSessionSetup instance found");
8585

86-
session = mConfig.sessionSetupPool->Allocate(mConfig.sessionInitParams, peerId, this);
86+
session = mConfig.sessionSetupPool->Allocate(mConfig.sessionInitParams, mConfig.clientPool, peerId, this);
8787
if (session == nullptr)
8888
{
8989
ChipLogDetail(CASESessionManager, "UpdatePeerAddress: Failed to allocate OperationalSessionSetup instance");

src/app/CASESessionManager.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ class OperationalSessionSetupPoolDelegate;
3636

3737
struct CASESessionManagerConfig
3838
{
39-
DeviceProxyInitParams sessionInitParams;
39+
CASEClientInitParams sessionInitParams;
40+
CASEClientPoolDelegate * clientPool = nullptr;
4041
OperationalSessionSetupPoolDelegate * sessionSetupPool = nullptr;
4142
};
4243

src/app/OperationalSessionSetup.cpp

+5-13
Original file line numberDiff line numberDiff line change
@@ -221,18 +221,10 @@ void OperationalSessionSetup::UpdateDeviceData(const Transport::PeerAddress & ad
221221

222222
CHIP_ERROR OperationalSessionSetup::EstablishConnection(const ReliableMessageProtocolConfig & config)
223223
{
224-
mCASEClient = mInitParams.clientPool->Allocate();
224+
mCASEClient = mClientPool->Allocate();
225225
ReturnErrorCodeIf(mCASEClient == nullptr, CHIP_ERROR_NO_MEMORY);
226226

227-
CASEClientInitParams initParams = { mInitParams.sessionManager,
228-
mInitParams.sessionResumptionStorage,
229-
mInitParams.certificateValidityPolicy,
230-
mInitParams.exchangeMgr,
231-
mFabricTable,
232-
mInitParams.groupDataProvider,
233-
mInitParams.mrpLocalConfig };
234-
235-
CHIP_ERROR err = mCASEClient->EstablishSession(initParams, mPeerId, mDeviceAddress, config, this);
227+
CHIP_ERROR err = mCASEClient->EstablishSession(mInitParams, mPeerId, mDeviceAddress, config, this);
236228
if (err != CHIP_NO_ERROR)
237229
{
238230
CleanupCASEClient();
@@ -336,7 +328,7 @@ void OperationalSessionSetup::CleanupCASEClient()
336328
{
337329
if (mCASEClient)
338330
{
339-
mInitParams.clientPool->Release(mCASEClient);
331+
mClientPool->Release(mCASEClient);
340332
mCASEClient = nullptr;
341333
}
342334
}
@@ -370,7 +362,7 @@ OperationalSessionSetup::~OperationalSessionSetup()
370362
if (mCASEClient)
371363
{
372364
// Make sure we don't leak it.
373-
mInitParams.clientPool->Release(mCASEClient);
365+
mClientPool->Release(mCASEClient);
374366
}
375367
}
376368

@@ -388,7 +380,7 @@ CHIP_ERROR OperationalSessionSetup::LookupPeerAddress()
388380
return CHIP_NO_ERROR;
389381
}
390382

391-
auto const * fabricInfo = mFabricTable->FindFabricWithIndex(mPeerId.GetFabricIndex());
383+
auto const * fabricInfo = mInitParams.fabricTable->FindFabricWithIndex(mPeerId.GetFabricIndex());
392384
VerifyOrReturnError(fabricInfo != nullptr, CHIP_ERROR_INVALID_FABRIC_INDEX);
393385

394386
PeerId peerId(fabricInfo->GetCompressedFabricId(), mPeerId.GetNodeId());

src/app/OperationalSessionSetup.h

+5-30
Original file line numberDiff line numberDiff line change
@@ -45,31 +45,6 @@
4545

4646
namespace chip {
4747

48-
struct DeviceProxyInitParams
49-
{
50-
SessionManager * sessionManager = nullptr;
51-
SessionResumptionStorage * sessionResumptionStorage = nullptr;
52-
Credentials::CertificateValidityPolicy * certificateValidityPolicy = nullptr;
53-
Messaging::ExchangeManager * exchangeMgr = nullptr;
54-
FabricTable * fabricTable = nullptr;
55-
CASEClientPoolDelegate * clientPool = nullptr;
56-
Credentials::GroupDataProvider * groupDataProvider = nullptr;
57-
58-
Optional<ReliableMessageProtocolConfig> mrpLocalConfig = Optional<ReliableMessageProtocolConfig>::Missing();
59-
60-
CHIP_ERROR Validate() const
61-
{
62-
ReturnErrorCodeIf(sessionManager == nullptr, CHIP_ERROR_INCORRECT_STATE);
63-
// sessionResumptionStorage can be nullptr when resumption is disabled
64-
ReturnErrorCodeIf(exchangeMgr == nullptr, CHIP_ERROR_INCORRECT_STATE);
65-
ReturnErrorCodeIf(fabricTable == nullptr, CHIP_ERROR_INCORRECT_STATE);
66-
ReturnErrorCodeIf(groupDataProvider == nullptr, CHIP_ERROR_INCORRECT_STATE);
67-
ReturnErrorCodeIf(clientPool == nullptr, CHIP_ERROR_INCORRECT_STATE);
68-
69-
return CHIP_NO_ERROR;
70-
}
71-
};
72-
7348
class OperationalSessionSetup;
7449

7550
/**
@@ -171,20 +146,20 @@ class DLL_EXPORT OperationalSessionSetup : public SessionDelegate,
171146
public:
172147
~OperationalSessionSetup() override;
173148

174-
OperationalSessionSetup(DeviceProxyInitParams & params, ScopedNodeId peerId,
149+
OperationalSessionSetup(const CASEClientInitParams & params, CASEClientPoolDelegate * clientPool, ScopedNodeId peerId,
175150
OperationalSessionReleaseDelegate * releaseDelegate) :
176151
mSecureSession(*this)
177152
{
178153
mInitParams = params;
179-
if (params.Validate() != CHIP_NO_ERROR || releaseDelegate == nullptr)
154+
if (params.Validate() != CHIP_NO_ERROR || clientPool == nullptr || releaseDelegate == nullptr)
180155
{
181156
mState = State::Uninitialized;
182157
return;
183158
}
184159

160+
mClientPool = clientPool;
185161
mSystemLayer = params.exchangeMgr->GetSessionManager()->SystemLayer();
186162
mPeerId = peerId;
187-
mFabricTable = params.fabricTable;
188163
mReleaseDelegate = releaseDelegate;
189164
mState = State::NeedsAddress;
190165
mAddressLookupHandle.SetListener(this);
@@ -260,8 +235,8 @@ class DLL_EXPORT OperationalSessionSetup : public SessionDelegate,
260235
SecureConnected, // CASE session established.
261236
};
262237

263-
DeviceProxyInitParams mInitParams;
264-
FabricTable * mFabricTable = nullptr;
238+
CASEClientInitParams mInitParams;
239+
CASEClientPoolDelegate * mClientPool = nullptr;
265240
System::Layer * mSystemLayer;
266241

267242
// mCASEClient is only non-null if we are in State::Connecting or just

src/app/OperationalSessionSetupPool.h

+5-5
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ namespace chip {
2727
class OperationalSessionSetupPoolDelegate
2828
{
2929
public:
30-
virtual OperationalSessionSetup * Allocate(DeviceProxyInitParams & params, ScopedNodeId peerId,
31-
OperationalSessionReleaseDelegate * releaseDelegate) = 0;
30+
virtual OperationalSessionSetup * Allocate(const CASEClientInitParams & params, CASEClientPoolDelegate * clientPool,
31+
ScopedNodeId peerId, OperationalSessionReleaseDelegate * releaseDelegate) = 0;
3232

3333
virtual void Release(OperationalSessionSetup * device) = 0;
3434

@@ -47,10 +47,10 @@ class OperationalSessionSetupPool : public OperationalSessionSetupPoolDelegate
4747
public:
4848
~OperationalSessionSetupPool() override { mSessionSetupPool.ReleaseAll(); }
4949

50-
OperationalSessionSetup * Allocate(DeviceProxyInitParams & params, ScopedNodeId peerId,
51-
OperationalSessionReleaseDelegate * releaseDelegate) override
50+
OperationalSessionSetup * Allocate(const CASEClientInitParams & params, CASEClientPoolDelegate * clientPool,
51+
ScopedNodeId peerId, OperationalSessionReleaseDelegate * releaseDelegate) override
5252
{
53-
return mSessionSetupPool.CreateObject(params, peerId, releaseDelegate);
53+
return mSessionSetupPool.CreateObject(params, clientPool, peerId, releaseDelegate);
5454
}
5555

5656
void Release(OperationalSessionSetup * device) override { mSessionSetupPool.ReleaseObject(device); }

src/app/server/Server.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -290,11 +290,11 @@ CHIP_ERROR Server::Init(const ServerInitParams & initParams)
290290
.certificateValidityPolicy = mCertificateValidityPolicy,
291291
.exchangeMgr = &mExchangeMgr,
292292
.fabricTable = &mFabrics,
293-
.clientPool = &mCASEClientPool,
294293
.groupDataProvider = mGroupsProvider,
295294
.mrpLocalConfig = GetLocalMRPConfig(),
296295
},
297-
.sessionSetupPool = &mSessionSetupPool,
296+
.clientPool = &mCASEClientPool,
297+
.sessionSetupPool = &mSessionSetupPool,
298298
};
299299

300300
err = mCASESessionManager.Init(&DeviceLayer::SystemLayer(), caseSessionManagerConfig);

src/app/tests/TestOperationalDeviceProxy.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ void TestOperationalDeviceProxy_EstablishSessionDirectly(nlTestSuite * inSuite,
6969
VerifyOrDie(groupDataProvider.Init() == CHIP_NO_ERROR);
7070
// TODO: Set IPK in groupDataProvider
7171

72-
DeviceProxyInitParams params = {
72+
CASEClientInitParams params = {
7373
.sessionManager = &sessionManager,
7474
.sessionResumptionStorage = &sessionResumptionStorage,
7575
.exchangeMgr = &exchangeMgr,

src/controller/CHIPDeviceControllerFactory.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -245,18 +245,18 @@ CHIP_ERROR DeviceControllerFactory::InitSystemState(FactoryInitParams params)
245245
stateParams.sessionSetupPool = Platform::New<DeviceControllerSystemStateParams::SessionSetupPool>();
246246
stateParams.caseClientPool = Platform::New<DeviceControllerSystemStateParams::CASEClientPool>();
247247

248-
DeviceProxyInitParams deviceInitParams = {
248+
CASEClientInitParams sessionInitParams = {
249249
.sessionManager = stateParams.sessionMgr,
250250
.sessionResumptionStorage = stateParams.sessionResumptionStorage.get(),
251251
.exchangeMgr = stateParams.exchangeMgr,
252252
.fabricTable = stateParams.fabricTable,
253-
.clientPool = stateParams.caseClientPool,
254253
.groupDataProvider = stateParams.groupDataProvider,
255254
.mrpLocalConfig = GetLocalMRPConfig(),
256255
};
257256

258257
CASESessionManagerConfig sessionManagerConfig = {
259-
.sessionInitParams = deviceInitParams,
258+
.sessionInitParams = sessionInitParams,
259+
.clientPool = stateParams.caseClientPool,
260260
.sessionSetupPool = stateParams.sessionSetupPool,
261261
};
262262

0 commit comments

Comments
 (0)