@@ -72,24 +72,28 @@ @implementation MTRDeviceController_XPC
72
72
73
73
- (void )_updateRegistrationInfo
74
74
{
75
- NSMutableDictionary * registrationInfo = [NSMutableDictionary dictionary ];
75
+ dispatch_async (self.workQueue , ^{
76
+ std::lock_guard lock (*self.deviceMapLock );
76
77
77
- NSMutableDictionary * controllerContext = [NSMutableDictionary dictionary ];
78
- NSMutableArray * nodeIDs = [NSMutableArray array ];
78
+ NSMutableDictionary * registrationInfo = [NSMutableDictionary dictionary ];
79
79
80
- for (NSNumber * nodeID in [self .nodeIDToDeviceMap keyEnumerator ]) {
81
- MTRDevice * device = [self _deviceForNodeID: nodeID createIfNeeded: NO ];
82
- if ([device delegateExists ]) {
83
- NSMutableDictionary * nodeDictionary = [NSMutableDictionary dictionary ];
84
- MTR_REQUIRED_ATTRIBUTE (MTRDeviceControllerRegistrationNodeIDKey, nodeID, nodeDictionary)
80
+ NSMutableDictionary * controllerContext = [NSMutableDictionary dictionary ];
81
+ NSMutableArray * nodeIDs = [NSMutableArray array ];
85
82
86
- [nodeIDs addObject: nodeDictionary];
83
+ for (NSNumber * nodeID in [self .nodeIDToDeviceMap keyEnumerator ]) {
84
+ MTRDevice * device = self.nodeIDToDeviceMap [nodeID];
85
+ if ([device delegateExists ]) {
86
+ NSMutableDictionary * nodeDictionary = [NSMutableDictionary dictionary ];
87
+ MTR_REQUIRED_ATTRIBUTE (MTRDeviceControllerRegistrationNodeIDKey, nodeID, nodeDictionary)
88
+
89
+ [nodeIDs addObject: nodeDictionary];
90
+ }
87
91
}
88
- }
89
- MTR_REQUIRED_ATTRIBUTE (MTRDeviceControllerRegistrationNodeIDsKey, nodeIDs, registrationInfo)
90
- MTR_REQUIRED_ATTRIBUTE (MTRDeviceControllerRegistrationControllerContextKey, controllerContext, registrationInfo)
92
+ MTR_REQUIRED_ATTRIBUTE (MTRDeviceControllerRegistrationNodeIDsKey, nodeIDs, registrationInfo)
93
+ MTR_REQUIRED_ATTRIBUTE (MTRDeviceControllerRegistrationControllerContextKey, controllerContext, registrationInfo)
91
94
92
- [self updateControllerConfiguration: registrationInfo];
95
+ [self updateControllerConfiguration: registrationInfo];
96
+ });
93
97
}
94
98
95
99
- (void )_registerNodeID : (NSNumber *)nodeID
0 commit comments