@@ -89,7 +89,7 @@ void OnRegister(dnssd_error_e result, dnssd_service_h service, void * data)
8989 ChipLogError (DeviceLayer, " DNSsd %s: Error: %s" , __func__, get_error_message (result));
9090 rCtx->mCallback (rCtx->mCbContext , nullptr , nullptr , MATTER_PLATFORM_ERROR (result));
9191 // After this point, the context might be no longer valid
92- rCtx->mInstance . RemoveContext (rCtx );
92+ rCtx->RemoveFromOwner ( );
9393 return ;
9494 }
9595
@@ -115,9 +115,8 @@ gboolean OnBrowseTimeout(void * userData)
115115 auto * bCtx = reinterpret_cast <chip::Dnssd::BrowseContext *>(userData);
116116
117117 bCtx->mCallback (bCtx->mCbContext , bCtx->mServices .data (), bCtx->mServices .size (), true , CHIP_NO_ERROR);
118-
119118 // After this point the context might be no longer valid
120- bCtx->mInstance . RemoveContext (bCtx );
119+ bCtx->RemoveFromOwner ( );
121120
122121 // This is a one-shot timer
123122 return G_SOURCE_REMOVE;
@@ -210,7 +209,7 @@ void OnBrowse(dnssd_service_state_e state, dnssd_service_h service, void * data)
210209 {
211210 bCtx->mCallback (bCtx->mCbContext , nullptr , 0 , true , MATTER_PLATFORM_ERROR (ret));
212211 // After this point the context might be no longer valid
213- bCtx->mInstance . RemoveContext (bCtx );
212+ bCtx->RemoveFromOwner ( );
214213 }
215214}
216215
@@ -342,9 +341,8 @@ void OnResolve(dnssd_error_e result, dnssd_service_h service, void * userData)
342341
343342 err = chip::DeviceLayer::SystemLayer ().ScheduleLambda ([rCtx] {
344343 ChipLogProgress (DeviceLayer, " DNSsd Handle resolve task on schedule lambda" );
345-
346344 rCtx->Finalize (CHIP_NO_ERROR);
347- rCtx->mInstance . RemoveContext (rCtx );
345+ rCtx->RemoveFromOwner ( );
348346 });
349347 VerifyOrExit (err == CHIP_NO_ERROR,
350348 ChipLogError (DeviceLayer, " Failed to schedule resolve task: %" CHIP_ERROR_FORMAT, err.Format ()));
@@ -353,7 +351,7 @@ void OnResolve(dnssd_error_e result, dnssd_service_h service, void * userData)
353351
354352exit:
355353 rCtx->Finalize (ret != DNSSD_ERROR_NONE ? MATTER_PLATFORM_ERROR (ret) : err);
356- rCtx->mInstance . RemoveContext (rCtx );
354+ rCtx->RemoveFromOwner ( );
357355}
358356
359357CHIP_ERROR ResolveAsync (chip::Dnssd::ResolveContext * rCtx)
@@ -423,6 +421,11 @@ RegisterContext::~RegisterContext()
423421 }
424422}
425423
424+ void RegisterContext::RemoveFromOwner ()
425+ {
426+ mInstance .RemoveRegisterContext (this );
427+ }
428+
426429BrowseContext::BrowseContext (DnssdTizen & instance, const char * type, Dnssd::DnssdServiceProtocol protocol, uint32_t interfaceId,
427430 DnssdBrowseCallback callback, void * context) :
428431 mInstance (instance),
@@ -440,6 +443,11 @@ BrowseContext::~BrowseContext()
440443 }
441444}
442445
446+ void BrowseContext::RemoveFromOwner ()
447+ {
448+ mInstance .RemoveBrowseContext (this );
449+ }
450+
443451ResolveContext::ResolveContext (DnssdTizen & instance, const char * name, const char * type, uint32_t interfaceId,
444452 DnssdResolveCallback callback, void * context) :
445453 mInstance (instance),
@@ -465,6 +473,11 @@ void ResolveContext::Finalize(CHIP_ERROR error)
465473 mCallback (mCbContext , &mResult , chip::Span<chip::Inet::IPAddress>(&ipAddr, 1 ), CHIP_NO_ERROR);
466474}
467475
476+ void ResolveContext::RemoveFromOwner ()
477+ {
478+ mInstance .RemoveResolveContext (this );
479+ }
480+
468481CHIP_ERROR DnssdTizen::Init (DnssdAsyncReturnCallback initCallback, DnssdAsyncReturnCallback errorCallback, void * context)
469482{
470483 int ret = dnssd_initialize ();
@@ -571,7 +584,7 @@ CHIP_ERROR DnssdTizen::RegisterService(const DnssdService & service, DnssdPublis
571584 if (err != CHIP_NO_ERROR)
572585 { // Notify caller about error
573586 callback (context, nullptr , nullptr , err);
574- RemoveContext (serviceCtx);
587+ RemoveRegisterContext (serviceCtx);
575588 }
576589 return err;
577590}
@@ -603,7 +616,7 @@ CHIP_ERROR DnssdTizen::Browse(const char * type, Dnssd::DnssdServiceProtocol pro
603616 if (err != CHIP_NO_ERROR)
604617 { // Notify caller about error
605618 callback (context, nullptr , 0 , true , err);
606- RemoveContext (browseCtx);
619+ RemoveBrowseContext (browseCtx);
607620 }
608621 return err;
609622}
@@ -625,7 +638,7 @@ CHIP_ERROR DnssdTizen::Resolve(const DnssdService & browseResult, chip::Inet::In
625638
626639exit:
627640 if (err != CHIP_NO_ERROR)
628- RemoveContext (resolveCtx);
641+ RemoveResolveContext (resolveCtx);
629642 return err;
630643}
631644
@@ -665,7 +678,7 @@ ResolveContext * DnssdTizen::CreateResolveContext(const char * name, const char
665678 return ctxPtr;
666679}
667680
668- void DnssdTizen::RemoveContext (RegisterContext * context)
681+ void DnssdTizen::RemoveRegisterContext (RegisterContext * context)
669682{
670683 std::lock_guard<std::mutex> lock (mMutex );
671684 auto it = std::find_if (mRegisterContexts .begin (), mRegisterContexts .end (),
@@ -676,7 +689,7 @@ void DnssdTizen::RemoveContext(RegisterContext * context)
676689 }
677690}
678691
679- void DnssdTizen::RemoveContext (BrowseContext * context)
692+ void DnssdTizen::RemoveBrowseContext (BrowseContext * context)
680693{
681694 std::lock_guard<std::mutex> lock (mMutex );
682695 auto it =
@@ -687,7 +700,7 @@ void DnssdTizen::RemoveContext(BrowseContext * context)
687700 }
688701}
689702
690- void DnssdTizen::RemoveContext (ResolveContext * context)
703+ void DnssdTizen::RemoveResolveContext (ResolveContext * context)
691704{
692705 std::lock_guard<std::mutex> lock (mMutex );
693706 auto it = std::find_if (mResolveContexts .begin (), mResolveContexts .end (),
0 commit comments