Patch from Samuel Cormier-Iijima <sciyoshi@gmail.com>:
[cascardo/gnio.git] / test / test-stuff.c
1 #include <gio/gio.h>
2 #include <gnio/ginet4address.h>
3 #include <gnio/ginetaddress.h>
4 #include <gnio/gresolver.h>
5 #include <glib.h>
6 #include <glib/gprintf.h>
7
8 GMainLoop *loop;
9
10 void print_address (GInetAddress *address, gpointer data);
11
12 void
13 print_address (GInetAddress *address, gpointer data)
14 {
15         gchar *string = g_inet4_address_to_string (G_INET4_ADDRESS (address));
16
17         g_printf ("%s\n", string);
18
19         g_free (string);
20 }
21
22 void
23 resolve_callback (GObject *source, GAsyncResult *result, gpointer data)
24 {
25         GError *error = NULL;
26
27         GResolver *resolver = G_RESOLVER (source);
28
29         GList *list;
30
31         list = g_resolver_resolve_list_finish (resolver, result, &error);
32
33         if (error) {
34                 g_error (error->message);
35                 return;
36         }
37
38         g_printf ("\nwww.google.com (list, async):\n");
39
40         g_list_foreach (list, (GFunc) print_address, NULL);
41
42         g_list_foreach (list, (GFunc) g_object_unref, NULL);
43
44         g_list_free (list);
45
46         g_main_loop_quit (loop);
47 }
48
49 int main (int argc, char *argv[])
50 {
51         GInetAddress *address;
52         GResolver *resolver;
53         GError *error = NULL;
54
55         loop = g_main_loop_new (NULL, FALSE);
56
57         g_type_init ();
58
59         address = (GInetAddress *) g_inet4_address_from_string ("127.0.0.1");
60
61         g_printf ("%s:\n", g_inet4_address_to_string (G_INET4_ADDRESS (address)));
62
63         g_printf ("is_any: %d, is_linklocal: %d, is_loopback: %d\n", g_inet_address_is_any (address), g_inet_address_is_linklocal (address), g_inet_address_is_loopback (address));
64
65         g_object_unref (address);
66
67         address = (GInetAddress *) g_inet4_address_from_string ("0.0.0.0");
68
69         g_printf ("\n%s:\n", g_inet4_address_to_string (G_INET4_ADDRESS (address)));
70
71         g_printf ("is_any: %d, is_linklocal: %d, is_loopback: %d\n", g_inet_address_is_any (address), g_inet_address_is_linklocal (address), g_inet_address_is_loopback (address));
72
73         g_object_unref (address);
74
75         address = (GInetAddress *) g_inet4_address_from_string ("169.254.0.0");
76
77         g_printf ("\n%s:\n", g_inet4_address_to_string (G_INET4_ADDRESS (address)));
78
79         g_printf ("is_any: %d, is_linklocal: %d, is_loopback: %d\n", g_inet_address_is_any (address), g_inet_address_is_linklocal (address), g_inet_address_is_loopback (address));
80
81         g_object_unref (address);
82
83         resolver = G_RESOLVER (g_object_new (G_TYPE_RESOLVER, NULL));
84
85         address = g_resolver_resolve (resolver, "www.yahoo.com", NULL, &error);
86
87         if (!address) {
88                 g_error (error->message);
89                 return 0;
90         }
91
92         g_printf ("\nwww.yahoo.com: %s\n", g_inet4_address_to_string (G_INET4_ADDRESS (address)));
93
94         g_printf ("is_any: %d, is_linklocal: %d, is_loopback: %d\n", g_inet_address_is_any (address), g_inet_address_is_linklocal (address), g_inet_address_is_loopback (address));
95
96         g_object_unref (address);
97
98         g_resolver_resolve_list_async (resolver, "www.google.com", NULL, resolve_callback, NULL);
99
100         g_main_loop_run (loop);
101
102         return 0;
103 }