@@ -510,15 +510,20 @@ - (void)shutdownAllSubscriptions:(dispatch_queue_t _Nonnull)clientQueue requestS
510
510
});
511
511
}
512
512
513
- - (void )startMatterServer
513
+ - (void )startMatterServer : (dispatch_queue_t _Nonnull)clientQueue
514
+ startMatterServerCompletionCallback : (nullable void (^)(MatterError * _Nonnull))startMatterServerCompletionCallback
514
515
{
515
516
ChipLogProgress (AppServer, " CastingServerBridge().startMatterServer() called" );
516
517
517
- dispatch_sync (_chipWorkQueue, ^{
518
+ dispatch_async (_chipWorkQueue, ^{
518
519
// Initialize the Matter server
519
520
CHIP_ERROR err = chip::Server::GetInstance ().Init (*self->_serverInitParams );
520
521
if (err != CHIP_NO_ERROR) {
521
522
ChipLogError (AppServer, " chip::Server init failed: %s" , ErrorStr (err));
523
+ dispatch_async (clientQueue, ^{
524
+ startMatterServerCompletionCallback (
525
+ [[MatterError alloc ] initWithCode: err.AsInteger () message: [NSString stringWithUTF8String: err.AsString ()]]);
526
+ });
522
527
return ;
523
528
}
524
529
@@ -527,8 +532,28 @@ - (void)startMatterServer
527
532
ChipLogProgress (
528
533
AppServer, " CastingServerBridge().startMatterServer() reconnecting to previously connected VideoPlayer..." );
529
534
err = CastingServer::GetInstance ()->VerifyOrEstablishConnection (
530
- *(self->_previouslyConnectedVideoPlayer ), [](TargetVideoPlayerInfo * cppTargetVideoPlayerInfo) {},
531
- [](CHIP_ERROR err) {}, [](TargetEndpointInfo * cppTargetEndpointInfo) {});
535
+ *(self->_previouslyConnectedVideoPlayer ),
536
+ [clientQueue, startMatterServerCompletionCallback](TargetVideoPlayerInfo * cppTargetVideoPlayerInfo) {
537
+ dispatch_async (clientQueue, ^{
538
+ startMatterServerCompletionCallback (
539
+ [[MatterError alloc ] initWithCode: CHIP_NO_ERROR.AsInteger ()
540
+ message: [NSString stringWithUTF8String: CHIP_NO_ERROR.AsString ()]]);
541
+ });
542
+ },
543
+ [clientQueue, startMatterServerCompletionCallback](CHIP_ERROR err) {
544
+ dispatch_async (clientQueue, ^{
545
+ startMatterServerCompletionCallback (
546
+ [[MatterError alloc ] initWithCode: err.AsInteger ()
547
+ message: [NSString stringWithUTF8String: err.AsString ()]]);
548
+ });
549
+ },
550
+ [](TargetEndpointInfo * cppTargetEndpointInfo) {});
551
+ } else {
552
+ dispatch_async (clientQueue, ^{
553
+ startMatterServerCompletionCallback (
554
+ [[MatterError alloc ] initWithCode: CHIP_NO_ERROR.AsInteger ()
555
+ message: [NSString stringWithUTF8String: CHIP_NO_ERROR.AsString ()]]);
556
+ });
532
557
}
533
558
});
534
559
}
0 commit comments