__SSDP_LOG_FUNC_EXIT__;
return;
}
+
+static gboolean
+__ssdp_registered_cb(gpointer data)
+{
+ __SSDP_LOG_FUNC_ENTER__;
+ SSDP_LOCK;
+ if (data == NULL) {
+ SSDP_UNLOCK;
+ __SSDP_LOG_FUNC_EXIT__;
+ return FALSE;
+ }
+
+ ssdp_service_s *service = __ssdp_find_local_service(g_ssdp_local_services,
+ (ssdp_service_h)data);
+ if (service == NULL) {
+ SSDP_LOGE("service isn't exist.");
+ SSDP_UNLOCK;
+ __SSDP_LOG_FUNC_EXIT__;
+ return FALSE;
+ }
+
+ if (service->registered_cb == NULL) {
+ SSDP_LOGE("registered_cb is empty.");
+ SSDP_UNLOCK;
+ __SSDP_LOG_FUNC_EXIT__;
+ return FALSE;
+ }
+
+ service->origin = SSDP_SERVICE_STATE_REGISTERED;
+ service->registered_cb(SSDP_ERROR_NONE, service->service_handler, service->cb_user_data);
+
+ service->registered_cb = NULL;
+ service->cb_user_data = NULL;
+
+ SSDP_UNLOCK;
+ __SSDP_LOG_FUNC_EXIT__;
+ return FALSE;
+}
+
+static void __ssdp_invoke_registered_cb(ssdp_service_h local_service)
+{
+ g_idle_add(__ssdp_registered_cb, (void *)local_service);
+}
//LCOV_EXCL_STOP
EXPORT_API int ssdp_initialize()
gssdp_resource_group_set_available(service->resource_group, TRUE);
SSDP_LOGD("Now service is available [%u]", local_service);
-
SSDP_LOGD("Resource group id is [%d]\n", service->resource_id);
+ __ssdp_invoke_registered_cb(local_service);
+
SSDP_UNLOCK;
__SSDP_LOG_FUNC_EXIT__;
return status;
static void __registered_cb(ssdp_error_e result, ssdp_service_h ssdp_service, void *user_data)
{
+ g_main_loop_quit(g_loop);
return;
}
ret = ssdp_register_local_service(serv_id, &__registered_cb, NULL);
assert_eq(ret, SSDP_ERROR_NONE);
+ g_main_loop_run(g_loop);
+
ssdp_deregister_local_service(serv_id);
ssdp_destroy_local_service(serv_id);
ret = ssdp_register_local_service(serv_id, &__registered_cb, NULL);
assert_eq(ret, SSDP_ERROR_NONE);
+ g_main_loop_run(g_loop);
+
ret = ssdp_deregister_local_service(serv_id);
assert_eq(ret, SSDP_ERROR_NONE);
ret = ssdp_register_local_service(serv_id, &__registered_cb, NULL);
assert_eq(ret, SSDP_ERROR_NONE);
+ g_main_loop_run(g_loop);
+
ret = ssdp_deregister_local_service(serv_id + 1);
assert_eq(ret, SSDP_ERROR_SERVICE_NOT_FOUND);