Add new dns-sd APIs 16/279616/5
authorcheoleun moon <chleun.moon@samsung.com>
Wed, 31 Aug 2022 08:54:10 +0000 (17:54 +0900)
committercheoleun moon <chleun.moon@samsung.com>
Thu, 1 Sep 2022 05:26:00 +0000 (14:26 +0900)
Change-Id: Ifba18e43e0122af496755b59cfad07aea355139d

include/dns-sd-internal.h
include/dns-sd.h
src/dns-sd/dns-sd.c
tests/dns-sd-internal-test.c

index aac2c90b849b7805203b310eb3c5b685f20d6742..929bba4a7ff0463adb4831cc7459c1c725c7f999 100644 (file)
@@ -28,37 +28,6 @@ extern "C" {
 #define TIZEN_ERROR_DNSSD -0x01CA0000
 #endif
 
-/**
- * @brief Gets the interface name of DNSSD local service
- * @since_tizen 4.0
- * @privilevel public
- * @privilege %http://tizen.org/privilege/internet
- * @param[in] service The DNSSD service handle
- * @param[in] interface The interface name
- * @retval #DNSSD_ERROR_NONE Successful
- * @retval #DNSSD_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #DNSSD_ERROR_NOT_SUPPORTED Not Supported
- * @retval #DNSSD_ERROR_OUT_OF_MEMORY Out of Memory
- * @retval #DNSSD_ERROR_NOT_INITIALIZED Not Initialized
- */
-int dnssd_service_set_interface(dnssd_service_h local_service, const char *interface);
-
-/**
- * @brief Gets the interface name of DNSSD local/remote service.
- * @since_tizen 6.5
- * @remarks You must release @a interface using g_free().
- * @privilevel public
- * @privilege %http://tizen.org/privilege/internet
- * @param[in] service The DNSSD service handle
- * @param[out] interface The interface name
- * @retval #DNSSD_ERROR_NONE Successful
- * @retval #DNSSD_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #DNSSD_ERROR_NOT_SUPPORTED Not Supported
- * @retval #DNSSD_ERROR_OUT_OF_MEMORY Out of Memory
- * @retval #DNSSD_ERROR_NOT_INITIALIZED Not Initialized
- */
-int dnssd_service_get_interface(dnssd_service_h dnssd_service, char **interface);
-
 /**
  * @brief Starts browsing the DNSSD remote service on a specific network interface.
  * @details found_cb would be called only if there are any services available of
@@ -92,143 +61,6 @@ int dnssd_start_browsing_service_on_interface(const char *service_type, const ch
                dnssd_browser_h *dnssd_service, dnssd_found_cb found_cb,
                void *user_data);
 
-/**
- * @brief Browses the services which have @a service_type.
- * @details @a found_cb will be called whenever a service appear or disapear from the network.
- *          Application will keep browsing until it calls dnssd_cancel_browse_service().
- * @since_tizen 6.5
- * @privlevel public
- * @privilege %http://tizen.org/privilege/internet
- * @remark dnssd_resolve_service() should be called in @a found_cb
- *         if you want to get a service data such as a target host name, a port,
- *         txt record and IP addresses.
- * @param[in] service_type The DNSSD service type to browse.
- * @param[out] browser The DNSSD browse service handle
- * @param[in] found_cb The callback function to be called
- * @param[in] user_data The user data passed to the callback function
- * @return @c 0 on success, otherwise negative error value
- * @retval #DNSSD_ERROR_NONE Successful
- * @retval #DNSSD_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #DNSSD_ERROR_NOT_SUPPORTED Not Supported
- * @retval #DNSSD_ERROR_SERVICE_NOT_RUNNING Service Not Running
- * @retval #DNSSD_ERROR_NOT_INITIALIZED Not Initialized
- * @retval #DNSSD_ERROR_PERMISSION_DENIED Permission Denied
- * see dnssd_cancel_browse_service()
- */
-int dnssd_browse_service(const char *service_type, const char *interface,
-               dnssd_browser_h *browser, dnssd_found_cb found_cb, void *user_data);
-
-/**
- * @brief Cancels browsing the services.
- * @since_tizen 6.5
- * @param[in] browser The DNSSD browse service handle returned by dnssd_browse_service()
- * @return @c 0 on success, otherwise negative error value
- * @retval #DNSSD_ERROR_NONE Successful
- * @retval #DNSSD_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #DNSSD_ERROR_NOT_SUPPORTED Not Supported
- * @retval #DNSSD_ERROR_SERVICE_NOT_RUNNING Service Not Running
- * @retval #DNSSD_ERROR_NOT_INITIALIZED Not Initialized
- * see dnssd_browse_service()
- */
-
-int dnssd_cancel_browse_service(dnssd_browser_h browser);
-
-/**
- * @brief Called when the service is resolved.
- * @since_tizen 6.5
- * @param[in] result The result of resolving.
- * @param[in] service The resolved service.
- * @param[in] user_data The user data passed from the request function
- * @see dnssd_resolve_service()
- */
-typedef void (*dnssd_resolved_cb) (dnssd_error_e result,
-               dnssd_service_h service, void *user_data);
-
-/**
- * @brief Resolves a service browsed by dnssd_browse_service().
- * @details @a resolved_cb will be called whenever a service is resolved.
- *         You can get a target host name, a port, txt record and IP addresses
- *         from @a resolved_cb. If you have gotten the desired results,
- *         cancel resolving service using dnssd_cancel_resolve_service().
- * @since_tizen 6.5
- * @privlevel public
- * @privilege %http://tizen.org/privilege/internet
- * @param[in] service The DNSSD service handle
- * @param[in] resolved_cb The callback function to be called
- * @param[in] user_data The user data passed to the callback function
- * @return @c 0 on success, otherwise negative error value
- * @retval #DNSSD_ERROR_NONE Successful
- * @retval #DNSSD_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #DNSSD_ERROR_NOT_SUPPORTED Not Supported
- * @retval #DNSSD_ERROR_SERVICE_NOT_RUNNING Service Not Running
- * @retval #DNSSD_ERROR_NOT_INITIALIZED Not Initialized
- * @retval #DNSSD_ERROR_PERMISSION_DENIED Permission Denied
- * @see dnssd_browse_service()
- * @see dnssd_cancel_resolve_service()
- */
-int dnssd_resolve_service(dnssd_service_h service,
-               dnssd_resolved_cb resolved_cb, void *user_data);
-
-/**
- * @brief Cancels resolving a service.
- * @since_tizen 6.5
- * @privlevel public
- * @privilege %http://tizen.org/privilege/internet
- * @param[in] service The DNSSD service handle
- * @return @c 0 on success, otherwise negative error value
- * @retval #DNSSD_ERROR_NONE Successful
- * @retval #DNSSD_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #DNSSD_ERROR_NOT_SUPPORTED Not Supported
- * @retval #DNSSD_ERROR_SERVICE_NOT_RUNNING Service Not Running
- * @retval #DNSSD_ERROR_NOT_INITIALIZED Not Initialized
- * @retval #DNSSD_ERROR_PERMISSION_DENIED Permission Denied
- * @see dnssd_resolve_service()
- */
-int dnssd_cancel_resolve_service(dnssd_service_h service);
-
-
-/**
- * @brief Creates a DNSSD remote service handle.
- * @details @a dnssd_service is used for dnssd_resolve_service() only.
- * @since_tizen 6.5
- * @remarks You must release @a dnssd_service using dnssd_destroy_remote_service().
- * @param[in] service_type The DNSSD service type. It is expressed as type
- *            followed by protocol, separated by a dot(e.g. "_ftp._tcp"). It
- *            must begin with an underscore, followed by 1-15 characters which
- *            may be letters, digits, or hyphens. The transport protocol must be
- *            "_tcp" or "_udp". New service types should be registered at
- *            http://www.dns-sd.org/ServiceTypes.html.
- * @param[in] service_name The name of DNSSD remote service
- * @param[in] interface The interface name
- * @param[out] dnssd_service The DNSSD remote handle
- * @return @c 0 on success,
- *         otherwise negative error value
- * @retval #DNSSD_ERROR_NONE Successful
- * @retval #DNSSD_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #DNSSD_ERROR_OUT_OF_MEMORY Out of memory
- * @retval #DNSSD_ERROR_NOT_SUPPORTED Not Supported
- * @retval #DNSSD_ERROR_NOT_INITIALIZED Not Initialized
- * @see dnssd_destroy_remote_service()
- * @pre This API needs dnssd_initialize() before use
- */
-int dnssd_create_remote_service(const char *service_type, const char *service_name, const char *interfac, dnssd_service_h *dnssd_service);
-
-/**
- * @brief Destroys the DNSSD remote service handle.
- * @since_tizen 6.5
- * @remarks You must destroy only remote services created using dnssd_create_remote_service().
- * @param[in] dnssd_service The DNSSD remote service handle
- * @return @c 0 on success,
- *         otherwise negative error value
- * @retval #DNSSD_ERROR_NONE Successful
- * @retval #DNSSD_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #DNSSD_ERROR_NOT_SUPPORTED Not Supported
- * @retval #DNSSD_ERROR_NOT_INITIALIZED Not Initialized
- * @see dnssd_create_remote_service()
- * @pre This API needs dnssd_create_remote_service() before use.
- */
-int dnssd_destroy_remote_service(dnssd_service_h dnssd_service);
-
 #ifdef __cplusplus
 }
 #endif
index 9313edd848233be4d1decb6de3f40dba93941b99..5650252acb399f4697070b366173a35f93b76c77 100644 (file)
@@ -315,7 +315,6 @@ int dnssd_service_remove_txt_record(dnssd_service_h local_service, const char *k
  */
 int dnssd_service_set_record(dnssd_service_h local_service, unsigned short type, unsigned short length, const void *data);
 
-
 /**
  * @brief Unsets the DNS resource record. DNS resource record for the given type
  *        must be set using dnssd_service_set_record().
@@ -336,6 +335,37 @@ int dnssd_service_set_record(dnssd_service_h local_service, unsigned short type,
  */
 int dnssd_service_unset_record(dnssd_service_h local_service, unsigned short type);
 
+/**
+ * @brief Sets the interface name of DNSSD local service.
+ * @detail The @a interface is the interface of network card that this service is provided (e.g. wlan0, eth0, etc.).
+ * @since_tizen 7.0
+ * @param[in] local_service The DNSSD service handle
+ * @param[in] interface The interface name
+ * @return @c 0 on success,
+ *         otherwise negative error value
+ * @retval #DNSSD_ERROR_NONE Successful
+ * @retval #DNSSD_ERROR_NOT_SUPPORTED Not Supported
+ * @retval #DNSSD_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DNSSD_ERROR_NOT_INITIALIZED Not Initialized
+ */
+int dnssd_service_set_interface(dnssd_service_h local_service, const char *interface);
+
+/**
+ * @brief Gets the interface name of DNSSD local/remote service.
+ * @since_tizen 7.0
+ * @remarks You must release @a interface using free().
+ * @param[in] service The DNSSD service handle
+ * @param[out] interface The interface name
+ * @return @c 0 on success,
+ *         otherwise negative error value
+ * @retval #DNSSD_ERROR_NONE Successful
+ * @retval #DNSSD_ERROR_NOT_SUPPORTED Not Supported
+ * @retval #DNSSD_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DNSSD_ERROR_NOT_INITIALIZED Not Initialized
+ * @retval #DNSSD_ERROR_OUT_OF_MEMORY Out of Memory
+ */
+int dnssd_service_get_interface(dnssd_service_h service, char **interface);
+
 
 /**
  * @brief Registers the DNSSD local service for publishing.
@@ -530,11 +560,154 @@ int dnssd_service_get_port(dnssd_service_h dnssd_service, int *port);
  */
 int dnssd_service_get_all_txt_record(dnssd_service_h dnssd_service, unsigned short *length, void **value);
 
+/**
+ * @brief Browses the services which have @a service_type.
+ * @details @a found_cb will be called whenever a service appear or disappear from the network.
+ *          Application will keep browsing until it calls dnssd_cancel_browsing_service().
+ * @since_tizen 7.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/internet
+ * @remarks dnssd_resolve_service() should be called in @a found_cb
+ *         if you want to get a service data such as a target host name, a port,
+ *         txt record and IP addresses.
+ * @remarks The @a browser should be released using dnssd_cancel_browsing_service().
+ * @param[in] service_type The DNSSD service type to browse.
+ * @param[in] interface The interface name
+ * @param[out] browser The DNSSD browse service handle
+ * @param[in] found_cb The callback function to be called
+ * @param[in] user_data The user data passed to the callback function
+ * @return @c 0 on success, otherwise negative error value
+ * @retval #DNSSD_ERROR_NONE Successful
+ * @retval #DNSSD_ERROR_NOT_SUPPORTED Not Supported
+ * @retval #DNSSD_ERROR_PERMISSION_DENIED Permission Denied
+ * @retval #DNSSD_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DNSSD_ERROR_OPERATION_FAILED Operation failed
+ * @retval #DNSSD_ERROR_OUT_OF_MEMORY Out of Memory
+ * @retval #DNSSD_ERROR_SERVICE_NOT_RUNNING Service Not Running
+ * @retval #DNSSD_ERROR_NOT_INITIALIZED Not Initialized
+ * @see dnssd_cancel_browsing_service()
+ */
+int dnssd_browse_service(const char *service_type, const char *interface,
+               dnssd_browser_h *browser, dnssd_found_cb found_cb, void *user_data);
+
+/**
+ * @brief Cancels browsing the services.
+ * @since_tizen 7.0
+ * @param[in] browser The DNSSD browse service handle returned by dnssd_browse_service()
+ * @return @c 0 on success, otherwise negative error value
+ * @retval #DNSSD_ERROR_NONE Successful
+ * @retval #DNSSD_ERROR_NOT_SUPPORTED Not Supported
+ * @retval #DNSSD_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DNSSD_ERROR_OPERATION_FAILED Operation failed
+ * @retval #DNSSD_ERROR_SERVICE_NOT_RUNNING Service Not Running
+ * @retval #DNSSD_ERROR_NOT_INITIALIZED Not Initialized
+ * @see dnssd_browse_service()
+ */
+
+int dnssd_cancel_browsing_service(dnssd_browser_h browser);
+
+/**
+ * @brief Called when the service is resolved.
+ * @details The following @a result can be received: \n
+ * #DNSSD_ERROR_NONE Successful \n
+ * #DNSSD_ERROR_OPERATION_FAILED Operation failed \n
+ * @since_tizen 7.0
+ * @param[in] result The result of resolving.
+ * @param[in] remote_service The resolved service.
+ * @param[in] user_data The user data passed from the request function
+ * @see dnssd_resolve_service()
+ */
+typedef void (*dnssd_resolved_cb) (dnssd_error_e result,
+               dnssd_service_h remote_service, void *user_data);
+
+/**
+ * @brief Resolves a service browsed by dnssd_browse_service().
+ * @details @a resolved_cb will be called when a service is resolved.
+ *    You can get a target host name, a port, txt record and IP addresses
+ *    from @a resolved_cb. If you have gotten the desired results,
+ *    cancel resolving service using dnssd_cancel_resolving_service().
+ * @since_tizen 7.0
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/internet
+ * @param[in] remote_service The DNSSD service handle
+ * @param[in] resolved_cb The callback function to be called
+ * @param[in] user_data The user data passed to the callback function
+ * @return @c 0 on success, otherwise negative error value
+ * @retval #DNSSD_ERROR_NONE Successful
+ * @retval #DNSSD_ERROR_NOT_SUPPORTED Not Supported
+ * @retval #DNSSD_ERROR_PERMISSION_DENIED Permission Denied
+ * @retval #DNSSD_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DNSSD_ERROR_OPERATION_FAILED Operation failed
+ * @retval #DNSSD_ERROR_SERVICE_NOT_RUNNING Service Not Running
+ * @retval #DNSSD_ERROR_NOT_INITIALIZED Not Initialized
+ * @see dnssd_browse_service()
+ * @see dnssd_cancel_resolving_service()
+ */
+int dnssd_resolve_service(dnssd_service_h remote_service,
+               dnssd_resolved_cb resolved_cb, void *user_data);
+
+/**
+ * @brief Cancels resolving a service.
+ * @since_tizen 7.0
+ * @param[in] remote_service The DNSSD service handle
+ * @return @c 0 on success, otherwise negative error value
+ * @retval #DNSSD_ERROR_NONE Successful
+ * @retval #DNSSD_ERROR_NOT_SUPPORTED Not Supported
+ * @retval #DNSSD_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DNSSD_ERROR_OPERATION_FAILED Operation failed
+ * @retval #DNSSD_ERROR_SERVICE_NOT_RUNNING Service Not Running
+ * @retval #DNSSD_ERROR_NOT_INITIALIZED Not Initialized
+ * @see dnssd_resolve_service()
+ */
+int dnssd_cancel_resolving_service(dnssd_service_h remote_service);
+
+/**
+ * @brief Creates a DNSSD remote service handle.
+ * @details @a remote_service is used for dnssd_resolve_service() only.
+ * @since_tizen 7.0
+ * @remarks You must release @a remote_service using dnssd_destroy_remote_service().
+ * @param[in] service_type The DNSSD service type. It is expressed as type
+ *            followed by protocol, separated by a dot(e.g. "_ftp._tcp"). It
+ *            must begin with an underscore, followed by 1-15 characters which
+ *            may be letters, digits, or hyphens. The transport protocol must be
+ *            "_tcp" or "_udp". New service types should be registered at
+ *            http://www.dns-sd.org/ServiceTypes.html.
+ * @param[in] service_name The name of DNSSD remote service
+ * @param[in] interface The interface name
+ * @param[out] remote_service The DNSSD remote handle
+ * @return @c 0 on success,
+ *         otherwise negative error value
+ * @retval #DNSSD_ERROR_NONE Successful
+ * @retval #DNSSD_ERROR_NOT_SUPPORTED Not Supported
+ * @retval #DNSSD_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DNSSD_ERROR_OUT_OF_MEMORY Out of memory
+ * @retval #DNSSD_ERROR_NOT_INITIALIZED Not Initialized
+ * @see dnssd_destroy_remote_service()
+ */
+int dnssd_create_remote_service(const char *service_type, const char *service_name,
+               const char *interface, dnssd_service_h *remote_service);
+
+/**
+ * @brief Destroys the DNSSD remote service handle.
+ * @since_tizen 7.0
+ * @remarks You must destroy only remote services created using dnssd_create_remote_service().
+ * @param[in] remote_service The DNSSD remote service handle
+ * @return @c 0 on success,
+ *         otherwise negative error value
+ * @retval #DNSSD_ERROR_NONE Successful
+ * @retval #DNSSD_ERROR_NOT_SUPPORTED Not Supported
+ * @retval #DNSSD_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #DNSSD_ERROR_NOT_INITIALIZED Not Initialized
+ * @see dnssd_create_remote_service()
+ */
+int dnssd_destroy_remote_service(dnssd_service_h remote_service);
+
 
 /**
  * @}
  */
 
+
 #ifdef __cplusplus
 }
 #endif
index 78befdb99143fe3fb518d55ce1bdda207aa60835..ffad5ac808db15d4a91131397c0a0cf2c38405af 100644 (file)
@@ -1225,8 +1225,7 @@ static void __dnssd_getaddrinfo_reply_cb(DNSServiceRef sd_ref,
                                (flags & kDNSServiceFlagsAdd) ? "Available" : "Unavailable");
        }
 
-       g_idle_add_full(G_PRIORITY_HIGH, __remove_service_getaddrinfo_socket,
-                                       local_handle, NULL);
+       __remove_service_getaddrinfo_socket(local_handle);
        DNSSD_UNLOCK;
 }
 
@@ -1657,7 +1656,7 @@ EXPORT_API int dnssd_browse_service(const char *service_type, const char *interf
        return _dnssd_browse_service(service_type, interface, 0, browser, found_cb, user_data);
 }
 
-EXPORT_API int dnssd_cancel_browse_service(dnssd_browser_h browser)
+EXPORT_API int dnssd_cancel_browsing_service(dnssd_browser_h browser)
 {
        return DNSSD_ERROR_NONE;
 }
@@ -1707,7 +1706,7 @@ EXPORT_API int dnssd_resolve_service(dnssd_service_h service,
        return res;
 }
 
-EXPORT_API int dnssd_cancel_resolve_service(dnssd_service_h service)
+EXPORT_API int dnssd_cancel_resolving_service(dnssd_service_h service)
 {
        return DNSSD_ERROR_NONE;
 }
index 5517aa208e3978d15fadfea708f1b7b44dc0f4d8..5e812ac753170208ced9dfa4ed73f5a10fa72b5e 100644 (file)
@@ -252,14 +252,14 @@ int test_dnssd_browse_service()
        return 1;
 }
 
-int test_dnssd_cancel_browse_service()
+int test_dnssd_cancel_browsing_service()
 {
        dnssd_browser_h browser;
        int rv;
        printf("Enter Browse Service Handle:\n");
        rv = scanf("%u", &browser);
 
-       rv = dnssd_cancel_browse_service(browser);
+       rv = dnssd_cancel_browsing_service(browser);
        if (rv != DNSSD_ERROR_NONE) {
                printf("Failed to stop browse dns service %s\n",
                                dnssd_error_to_string(rv));
@@ -335,7 +335,7 @@ int test_thread(GIOChannel *source, GIOCondition condition, gpointer data)
                rv = test_dnssd_browse_service();
                break;
        case '4':
-               rv = test_dnssd_cancel_browse_service();
+               rv = test_dnssd_cancel_browsing_service();
                break;
        case '5':
                rv = test_dnssd_resolve_service();