File tree 3 files changed +9
-3
lines changed
src/darwin/Framework/CHIP
3 files changed +9
-3
lines changed Original file line number Diff line number Diff line change @@ -371,17 +371,22 @@ - (MTRDevice *)_setupDeviceForNodeID:(NSNumber *)nodeID prefetchedClusterData:(N
371
371
return [[MTRDevice alloc ] initForSubclassesWithNodeID: nodeID controller: self ];
372
372
}
373
373
374
- - (MTRDevice *)deviceForNodeID : (NSNumber *)nodeID
374
+ - (MTRDevice *)_deviceForNodeID : (NSNumber *)nodeID createIfNeeded : ( BOOL ) createIfNeeded
375
375
{
376
376
std::lock_guard lock (*self.deviceMapLock );
377
377
MTRDevice * deviceToReturn = [_nodeIDToDeviceMap objectForKey: nodeID];
378
- if (!deviceToReturn) {
378
+ if (!deviceToReturn && createIfNeeded ) {
379
379
deviceToReturn = [self _setupDeviceForNodeID: nodeID prefetchedClusterData: nil ];
380
380
}
381
381
382
382
return deviceToReturn;
383
383
}
384
384
385
+ - (MTRDevice *)deviceForNodeID : (NSNumber *)nodeID
386
+ {
387
+ return [self _deviceForNodeID: nodeID createIfNeeded: YES ];
388
+ }
389
+
385
390
- (void )removeDevice : (MTRDevice *)device
386
391
{
387
392
std::lock_guard lock (*self.deviceMapLock );
Original file line number Diff line number Diff line change @@ -107,6 +107,7 @@ NS_ASSUME_NONNULL_BEGIN
107
107
#pragma mark - Device-specific data and SDK access
108
108
// DeviceController will act as a central repository for this opaque dictionary that MTRDevice manages
109
109
- (MTRDevice *)deviceForNodeID : (NSNumber *)nodeID ;
110
+ - (MTRDevice *)_deviceForNodeID : (NSNumber *)nodeID createIfNeeded : (BOOL )createIfNeeded ;
110
111
/* *
111
112
* _setupDeviceForNodeID is a hook expected to be implemented by subclasses to
112
113
* actually allocate a device object of the right type.
Original file line number Diff line number Diff line change @@ -487,7 +487,7 @@ - (oneway void)controller:(NSUUID *)controller controllerConfigurationUpdated:(N
487
487
continue ;
488
488
}
489
489
490
- auto * device = static_cast <MTRDevice_XPC *>([self deviceForNodeID : nodeID]);
490
+ auto * device = static_cast <MTRDevice_XPC *>([self _deviceForNodeID : nodeID createIfNeeded: NO ]);
491
491
[device device: nodeID internalStateUpdated: deviceInternalState];
492
492
}
493
493
}
You can’t perform that action at this time.
0 commit comments