27
27
#include < platform/CHIPDeviceLayer.h>
28
28
#include < transport/SessionHandle.h>
29
29
30
+ NS_ASSUME_NONNULL_BEGIN
31
+
30
32
/* *
31
33
* Bridge that allows invoking a given MTRActionBlock on the Matter queue, after
32
34
* communication with the device in question has been established, as far as we
35
37
class MTRCallbackBridgeBase {
36
38
};
37
39
38
- // TODO: ADD NS_ASSUME_NONNULL_BEGIN to this header. When that happens, note
39
- // that in MTRActionBlock the two callback pointers are nonnull and the two
40
- // arguments of MTRResponseHandler are both nullable.
41
-
42
- typedef void (^MTRResponseHandler)(id value, NSError * error);
40
+ typedef void (^MTRResponseHandler)(id _Nullable value, NSError * _Nullable error);
43
41
typedef void (*MTRErrorCallback)(void * context, CHIP_ERROR error);
44
42
45
43
/* *
@@ -85,7 +83,7 @@ template <class T> class MTRCallbackBridge : public MTRCallbackBridgeBase {
85
83
* Construct a callback bridge, which can then have DispatchAction() called
86
84
* on it.
87
85
*/
88
- MTRCallbackBridge (dispatch_queue_t queue, MTRResponseHandler handler, MTRActionBlock action, T OnSuccessFn)
86
+ MTRCallbackBridge (dispatch_queue_t queue, MTRResponseHandler handler, MTRActionBlock _Nonnull action, T OnSuccessFn)
89
87
: mQueue (queue)
90
88
, mHandler (handler)
91
89
, mAction (action)
@@ -130,7 +128,7 @@ template <class T> class MTRCallbackBridge : public MTRCallbackBridgeBase {
130
128
* Does not attempt to establish any sessions to devices. Must not be used
131
129
* with any action blocks that need a session.
132
130
*/
133
- void DispatchLocalAction (MTRLocalActionBlock action)
131
+ void DispatchLocalAction (MTRLocalActionBlock _Nonnull action)
134
132
{
135
133
LogRequestStart ();
136
134
@@ -187,8 +185,8 @@ template <class T> class MTRCallbackBridge : public MTRCallbackBridgeBase {
187
185
ChipLogDetail (Controller, " %s " , mCookie.UTF8String );
188
186
}
189
187
190
- void MaybeDoAction (
191
- chip::Messaging::ExchangeManager * exchangeManager, const chip::Optional<chip::SessionHandle> & session, NSError * error)
188
+ void MaybeDoAction (chip::Messaging::ExchangeManager * _Nullable exchangeManager,
189
+ const chip::Optional<chip::SessionHandle> & session, NSError * _Nullable error)
192
190
{
193
191
// Make sure we don't hold on to our action longer than we have to.
194
192
auto action = mAction;
@@ -213,7 +211,7 @@ template <class T> class MTRCallbackBridge : public MTRCallbackBridgeBase {
213
211
214
212
static void OnFailureFn (void * context, CHIP_ERROR error) { DispatchFailure (context, [MTRError errorForCHIPErrorCode: error]); }
215
213
216
- static void DispatchSuccess (void * context, id value) { DispatchCallbackResult (context, nil , value); }
214
+ static void DispatchSuccess (void * context, id _Nullable value) { DispatchCallbackResult (context, nil , value); }
217
215
218
216
static void DispatchFailure (void * context, NSError * error) { DispatchCallbackResult (context, error, nil ); }
219
217
@@ -241,7 +239,7 @@ template <class T> class MTRCallbackBridge : public MTRCallbackBridgeBase {
241
239
dispatch_queue_t mQueue;
242
240
243
241
private:
244
- static void DispatchCallbackResult (void * context, NSError * error, id value)
242
+ static void DispatchCallbackResult (void * context, NSError * _Nullable error, id _Nullable value)
245
243
{
246
244
MTRCallbackBridge * callbackBridge = static_cast<MTRCallbackBridge *>(context);
247
245
if (!callbackBridge) {
@@ -267,7 +265,7 @@ template <class T> class MTRCallbackBridge : public MTRCallbackBridgeBase {
267
265
}
268
266
269
267
MTRResponseHandler mHandler;
270
- MTRActionBlock mAction;
268
+ MTRActionBlock _Nullable mAction;
271
269
bool mKeepAlive = false ;
272
270
273
271
T mSuccess;
@@ -277,3 +275,5 @@ template <class T> class MTRCallbackBridge : public MTRCallbackBridgeBase {
277
275
NSDate * mRequestTime;
278
276
NSString * mCookie;
279
277
};
278
+
279
+ NS_ASSUME_NONNULL_END
0 commit comments