diff options
| author | Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> | 2010-08-10 15:45:32 -0400 |
|---|---|---|
| committer | Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> | 2010-08-19 16:32:37 -0400 |
| commit | fc03ecce831cd94639df1a355f5dd8c9b8eebfae (patch) | |
| tree | 71f288015f6635414aaa05efdc6f2e7a65fb9e7a /gio/gnetworkaddress.c | |
| parent | f82f484b8ffa18aab10e79baa96bcfa438f8dc5b (diff) | |
| download | glib-fc03ecce831cd94639df1a355f5dd8c9b8eebfae.tar.gz | |
Implemented proxy_enumerate() for all Connectables
This patch implements method proxy_enumerate from GSocketConnectable for
all connectables (GNetworkAddress, GNetworkService, GInetSocketAddress
and GUnixSocketAddress).
Reviewed-by: Dan Winship <danw@gnome.org>
Diffstat (limited to 'gio/gnetworkaddress.c')
| -rw-r--r-- | gio/gnetworkaddress.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/gio/gnetworkaddress.c b/gio/gnetworkaddress.c index e2ed039bd..80a3e31a6 100644 --- a/gio/gnetworkaddress.c +++ b/gio/gnetworkaddress.c @@ -30,6 +30,7 @@ #include "ginetaddress.h" #include "ginetsocketaddress.h" #include "gnetworkingprivate.h" +#include "gproxyaddressenumerator.h" #include "gresolver.h" #include "gsimpleasyncresult.h" #include "gsocketaddressenumerator.h" @@ -82,8 +83,9 @@ static void g_network_address_get_property (GObject *object, GValue *value, GParamSpec *pspec); -static void g_network_address_connectable_iface_init (GSocketConnectableIface *iface); -static GSocketAddressEnumerator *g_network_address_connectable_enumerate (GSocketConnectable *connectable); +static void g_network_address_connectable_iface_init (GSocketConnectableIface *iface); +static GSocketAddressEnumerator *g_network_address_connectable_enumerate (GSocketConnectable *connectable); +static GSocketAddressEnumerator *g_network_address_connectable_proxy_enumerate (GSocketConnectable *connectable); G_DEFINE_TYPE_WITH_CODE (GNetworkAddress, g_network_address, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE (G_TYPE_SOCKET_CONNECTABLE, @@ -151,6 +153,7 @@ static void g_network_address_connectable_iface_init (GSocketConnectableIface *connectable_iface) { connectable_iface->enumerate = g_network_address_connectable_enumerate; + connectable_iface->proxy_enumerate = g_network_address_connectable_proxy_enumerate; } static void @@ -909,3 +912,24 @@ g_network_address_connectable_enumerate (GSocketConnectable *connectable) return (GSocketAddressEnumerator *)addr_enum; } + +static GSocketAddressEnumerator * +g_network_address_connectable_proxy_enumerate (GSocketConnectable *connectable) +{ + GNetworkAddress *self = G_NETWORK_ADDRESS (connectable); + GSocketAddressEnumerator *proxy_enum; + gchar *uri; + + uri = g_strdup_printf ("%s://%s:%u", + self->priv->scheme ? self->priv->scheme : "none", + self->priv->hostname, self->priv->port); + + proxy_enum = g_object_new (G_TYPE_PROXY_ADDRESS_ENUMERATOR, + "connectable", connectable, + "uri", uri, + NULL); + + g_free (uri); + + return proxy_enum; +} |
