X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gio%2Fgnetworkservice.c;h=497d6fd35bec575981ded89e6a08f6ea796cfe4f;hb=8df2cca08a5c06286303b39a34121c7e6925bf15;hp=39b78d6a3f4f4743a1bbfa166d68872d088174f3;hpb=c3d6595f5a9230fc579edd9a646351b22ca6d976;p=platform%2Fupstream%2Fglib.git diff --git a/gio/gnetworkservice.c b/gio/gnetworkservice.c index 39b78d6..497d6fd 100644 --- a/gio/gnetworkservice.c +++ b/gio/gnetworkservice.c @@ -15,9 +15,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General - * Public License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307, USA. + * Public License along with this library; if not, see . */ #include "config.h" @@ -33,7 +31,7 @@ #include "gnetworkaddress.h" #include "gnetworkingprivate.h" #include "gresolver.h" -#include "gsimpleasyncresult.h" +#include "gtask.h" #include "gsocketaddressenumerator.h" #include "gsocketconnectable.h" #include "gsrvtarget.h" @@ -93,6 +91,7 @@ static GSocketAddressEnumerator *g_network_service_connectable_enumerate static GSocketAddressEnumerator *g_network_service_connectable_proxy_enumerate (GSocketConnectable *connectable); G_DEFINE_TYPE_WITH_CODE (GNetworkService, g_network_service, G_TYPE_OBJECT, + G_ADD_PRIVATE (GNetworkService) G_IMPLEMENT_INTERFACE (G_TYPE_SOCKET_CONNECTABLE, g_network_service_connectable_iface_init)) @@ -117,8 +116,6 @@ g_network_service_class_init (GNetworkServiceClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - g_type_class_add_private (klass, sizeof (GNetworkServicePrivate)); - gobject_class->set_property = g_network_service_set_property; gobject_class->get_property = g_network_service_get_property; gobject_class->finalize = g_network_service_finalize; @@ -167,8 +164,7 @@ g_network_service_connectable_iface_init (GSocketConnectableIface *connectable_i static void g_network_service_init (GNetworkService *srv) { - srv->priv = G_TYPE_INSTANCE_GET_PRIVATE (srv, G_TYPE_NETWORK_SERVICE, - GNetworkServicePrivate); + srv->priv = g_network_service_get_instance_private (srv); } static void @@ -245,7 +241,7 @@ g_network_service_get_property (GObject *object, * @protocol, and @domain. This will initially be unresolved; use the * #GSocketConnectable interface to resolve it. * - * Return value: (transfer full) (type GNetworkService): a new #GNetworkService + * Returns: (transfer full) (type GNetworkService): a new #GNetworkService * * Since: 2.22 */ @@ -267,7 +263,7 @@ g_network_service_new (const gchar *service, * * Gets @srv's service name (eg, "ldap"). * - * Return value: @srv's service name + * Returns: @srv's service name * * Since: 2.22 */ @@ -285,7 +281,7 @@ g_network_service_get_service (GNetworkService *srv) * * Gets @srv's protocol name (eg, "tcp"). * - * Return value: @srv's protocol name + * Returns: @srv's protocol name * * Since: 2.22 */ @@ -304,7 +300,7 @@ g_network_service_get_protocol (GNetworkService *srv) * Gets the domain that @srv serves. This might be either UTF-8 or * ASCII-encoded, depending on what @srv was created with. * - * Return value: @srv's domain name + * Returns: @srv's domain name * * Since: 2.22 */ @@ -323,7 +319,7 @@ g_network_service_get_domain (GNetworkService *srv) * Get's the URI scheme used to resolve proxies. By default, the service name * is used as scheme. * - * Return value: @srv's scheme name + * Returns: @srv's scheme name * * Since: 2.26 */ @@ -354,8 +350,7 @@ g_network_service_set_scheme (GNetworkService *srv, { g_return_if_fail (G_IS_NETWORK_SERVICE (srv)); - if (srv->priv->scheme) - g_free (srv->priv->scheme); + g_free (srv->priv->scheme); srv->priv->scheme = g_strdup (scheme); g_object_notify (G_OBJECT (srv), "scheme"); @@ -395,9 +390,6 @@ typedef struct { GError *error; - /* For async operation */ - GCancellable *cancellable; - GSimpleAsyncResult *result; } GNetworkServiceAddressEnumerator; typedef struct { @@ -530,13 +522,13 @@ g_network_service_address_enumerator_next (GSocketAddressEnumerator *enumerator return ret; } -static void next_async_resolved_targets (GObject *source_object, - GAsyncResult *result, - gpointer user_data); -static void next_async_have_targets (GNetworkServiceAddressEnumerator *srv_enum); -static void next_async_have_address (GObject *source_object, - GAsyncResult *result, - gpointer user_data); +static void next_async_resolved_targets (GObject *source_object, + GAsyncResult *result, + gpointer user_data); +static void next_async_have_targets (GTask *srv_enum); +static void next_async_have_address (GObject *source_object, + GAsyncResult *result, + gpointer user_data); static void g_network_service_address_enumerator_next_async (GSocketAddressEnumerator *enumerator, @@ -546,15 +538,9 @@ g_network_service_address_enumerator_next_async (GSocketAddressEnumerator *enum { GNetworkServiceAddressEnumerator *srv_enum = G_NETWORK_SERVICE_ADDRESS_ENUMERATOR (enumerator); + GTask *task; - g_return_if_fail (srv_enum->result == NULL); - - srv_enum->result = g_simple_async_result_new (G_OBJECT (enumerator), - callback, user_data, - g_network_service_address_enumerator_next_async); - - if (cancellable) - srv_enum->cancellable = g_object_ref (cancellable); + task = g_task_new (enumerator, cancellable, callback, user_data); /* If we haven't yet resolved srv, do that */ if (!srv_enum->srv->priv->targets) @@ -565,10 +551,10 @@ g_network_service_address_enumerator_next_async (GSocketAddressEnumerator *enum srv_enum->srv->priv->domain, cancellable, next_async_resolved_targets, - srv_enum); + task); } else - next_async_have_targets (srv_enum); + next_async_have_targets (task); } static void @@ -576,7 +562,8 @@ next_async_resolved_targets (GObject *source_object, GAsyncResult *result, gpointer user_data) { - GNetworkServiceAddressEnumerator *srv_enum = user_data; + GTask *task = user_data; + GNetworkServiceAddressEnumerator *srv_enum = g_task_get_source_object (task); GError *error = NULL; GList *targets; @@ -593,23 +580,21 @@ next_async_resolved_targets (GObject *source_object, if (error) { - GSimpleAsyncResult *simple = srv_enum->result; - - srv_enum->result = NULL; - g_simple_async_result_take_error (simple, error); - g_simple_async_result_complete (simple); - g_object_unref (simple); + g_task_return_error (task, error); + g_object_unref (task); } else { srv_enum->t = srv_enum->srv->priv->targets = targets; - next_async_have_targets (srv_enum); + next_async_have_targets (task); } } static void -next_async_have_targets (GNetworkServiceAddressEnumerator *srv_enum) +next_async_have_targets (GTask *task) { + GNetworkServiceAddressEnumerator *srv_enum = g_task_get_source_object (task); + /* Delegate to GNetworkAddress */ if (srv_enum->addr_enum == NULL && srv_enum->t) { @@ -631,23 +616,21 @@ next_async_have_targets (GNetworkServiceAddressEnumerator *srv_enum) if (srv_enum->addr_enum) { g_socket_address_enumerator_next_async (srv_enum->addr_enum, - srv_enum->cancellable, + g_task_get_cancellable (task), next_async_have_address, - srv_enum); + task); } else { - GSimpleAsyncResult *simple = srv_enum->result; - srv_enum->result = NULL; - if (srv_enum->error) { - g_simple_async_result_take_error (simple, srv_enum->error); + g_task_return_error (task, srv_enum->error); srv_enum->error = NULL; } + else + g_task_return_pointer (task, NULL, NULL); - g_simple_async_result_complete (simple); - g_object_unref (simple); + g_object_unref (task); } } @@ -656,7 +639,8 @@ next_async_have_address (GObject *source_object, GAsyncResult *result, gpointer user_data) { - GNetworkServiceAddressEnumerator *srv_enum = user_data; + GTask *task = user_data; + GNetworkServiceAddressEnumerator *srv_enum = g_task_get_source_object (task); GSocketAddress *address; GError *error = NULL; @@ -677,20 +661,12 @@ next_async_have_address (GObject *source_object, g_object_unref (srv_enum->addr_enum); srv_enum->addr_enum = NULL; - next_async_have_targets (srv_enum); + next_async_have_targets (task); } else { - GSimpleAsyncResult *simple = srv_enum->result; - - srv_enum->result = NULL; - - if (address) - g_simple_async_result_set_op_res_gpointer (simple, - address, g_object_unref); - - g_simple_async_result_complete (simple); - g_object_unref (simple); + g_task_return_pointer (task, address, g_object_unref); + g_object_unref (task); } } @@ -699,14 +675,7 @@ g_network_service_address_enumerator_next_finish (GSocketAddressEnumerator *enu GAsyncResult *result, GError **error) { - GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (result); - GSocketAddress *sockaddr; - - if (g_simple_async_result_propagate_error (simple, error)) - return NULL; - - sockaddr = g_simple_async_result_get_op_res_gpointer (simple); - return sockaddr ? g_object_ref (sockaddr) : NULL; + return g_task_propagate_pointer (G_TASK (result), error); } static void @@ -729,12 +698,6 @@ g_network_service_address_enumerator_finalize (GObject *object) if (srv_enum->resolver) g_object_unref (srv_enum->resolver); - if (srv_enum->result) - g_object_unref (srv_enum->result); - - if (srv_enum->cancellable) - g_object_unref (srv_enum->cancellable); - if (srv_enum->error) g_error_free (srv_enum->error);