[glib] Implemented proxy sample code that connect to proxy
- From: Nicolas Dufresne <nicolasd src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] Implemented proxy sample code that connect to proxy
- Date: Thu, 19 Aug 2010 21:05:50 +0000 (UTC)
commit e2a90bcb5fc50f099cbf8df01a09697f7e48522d
Author: Nicolas Dufresne <nicolas dufresne collabora co uk>
Date: Fri May 7 16:35:04 2010 -0400
Implemented proxy sample code that connect to proxy
gio/tests/proxy.c | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 83 insertions(+), 0 deletions(-)
---
diff --git a/gio/tests/proxy.c b/gio/tests/proxy.c
index e751c92..cf54d69 100644
--- a/gio/tests/proxy.c
+++ b/gio/tests/proxy.c
@@ -56,6 +56,7 @@ usage (void)
fprintf (stderr, " Use -netaddr to use GNetworkAddress enumerator (host:port).\n");
fprintf (stderr, " Use -neturi to use GNetworkAddress enumerator (uri).\n");
fprintf (stderr, " Use -netsrv to use GNetworkService enumerator (srv/protocol/domain).\n");
+ fprintf (stderr, " Use -connect to create a connection using GSocketClient object (uri).\n");
exit (1);
}
@@ -481,6 +482,82 @@ use_network_service (gboolean synchronous)
g_object_unref (enumerator);
}
+static void
+_socket_connect_cb (GObject *object,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ GError *error = NULL;
+ GMainLoop *loop = user_data;
+ GSocketClient *client = G_SOCKET_CLIENT (object);
+ GSocketConnection *connection;
+
+ connection = g_socket_client_connect_to_uri_finish (client,
+ result,
+ &error);
+ if (connection)
+ {
+ GSocketAddress *proxy_addr;
+ proxy_addr = g_socket_connection_get_remote_address (connection, NULL);
+ print_proxy_address (proxy_addr);
+ }
+ else
+ {
+ print_and_free_error (error);
+ }
+
+ g_main_loop_quit (loop);
+}
+
+static void
+use_socket_client (gboolean synchronous)
+{
+ GError *error = NULL;
+ GSocketClient *client;
+
+ client = g_socket_client_new ();
+
+ printf ("Proxies for URI '%s' are:\n", info);
+
+ if (synchronous)
+ {
+ GSocketConnection *connection;
+ GSocketAddress *proxy_addr;
+
+ connection = g_socket_client_connect_to_uri (client,
+ info,
+ 0,
+ cancellable,
+ &error);
+
+ if (connection)
+ {
+ proxy_addr = g_socket_connection_get_remote_address (connection, NULL);
+ print_proxy_address (proxy_addr);
+ }
+ else
+ {
+ print_and_free_error (error);
+ }
+ }
+ else
+ {
+ GMainLoop *loop = g_main_loop_new (NULL, FALSE);
+
+ g_socket_client_connect_to_uri_async (client,
+ info,
+ 0,
+ cancellable,
+ _socket_connect_cb,
+ loop);
+
+ g_main_loop_run (loop);
+ g_main_loop_unref (loop);
+ }
+
+ g_object_unref (client);
+}
+
typedef enum
{
USE_RESOLVER,
@@ -493,6 +570,7 @@ typedef enum
USE_NETWORK_ADDRESS,
USE_NETWORK_URI,
USE_NETWORK_SERVICE,
+ USE_SOCKET_CLIENT,
} ProxyTestType;
gint
@@ -526,6 +604,8 @@ main (gint argc, gchar **argv)
type = USE_NETWORK_URI;
else if (!strcmp (argv[1], "-netsrv"))
type = USE_NETWORK_SERVICE;
+ else if (!strcmp (argv[1], "-connect"))
+ type = USE_SOCKET_CLIENT;
else
usage ();
@@ -573,6 +653,9 @@ main (gint argc, gchar **argv)
case USE_NETWORK_SERVICE:
use_network_service (synchronous);
break;
+ case USE_SOCKET_CLIENT:
+ use_socket_client (synchronous);
+ break;
}
return return_value;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]