First set of changes for windows
[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 #include <winsock2.h>
9
10 GMainLoop *loop;
11
12 void print_address (GInetAddress *address, gpointer data);
13
14 void
15 print_address (GInetAddress *address, gpointer data)
16 {
17         gchar *string = g_inet4_address_to_string (G_INET4_ADDRESS (address));
18
19         g_printf ("%s\n", string);
20
21         g_free (string);
22 }
23
24 void
25 resolve_callback (GObject *source, GAsyncResult *result, gpointer data)
26 {
27         GError *error = NULL;
28
29         GResolver *resolver = G_RESOLVER (source);
30
31         GList *list;
32
33         list = g_resolver_resolve_list_finish (resolver, result, &error);
34
35         if (error) {
36                 g_error (error->message);
37                 return;
38         }
39
40         g_printf ("\nwww.google.com (list, async):\n");
41
42         g_list_foreach (list, (GFunc) print_address, NULL);
43
44         g_list_foreach (list, (GFunc) g_object_unref, NULL);
45
46         g_list_free (list);
47
48         g_main_loop_quit (loop);
49 }
50
51 int main (int argc, char *argv[])
52 {
53         GInetAddress *address;
54         GResolver *resolver;
55         GError *error = NULL;
56         WSADATA wsaData;
57
58         g_thread_init (NULL);
59
60         g_type_init ();
61
62         if (WSAStartup (MAKEWORD (2, 2), &wsaData) != 0)
63                 return 0;
64
65         loop = g_main_loop_new (NULL, FALSE);
66
67         address = (GInetAddress *) g_inet4_address_from_string ("127.0.0.1");
68
69         g_printf ("%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 ("0.0.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         address = (GInetAddress *) g_inet4_address_from_string ("169.254.0.0");
84
85         g_printf ("\n%s:\n", g_inet4_address_to_string (G_INET4_ADDRESS (address)));
86
87         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));
88
89         g_object_unref (address);
90
91         resolver = G_RESOLVER (g_object_new (G_TYPE_RESOLVER, NULL));
92
93         address = g_resolver_resolve (resolver, "www.yahoo.com", NULL, &error);
94
95         if (!address) {
96                 g_error (error->message);
97                 return 0;
98         }
99
100         g_printf ("\nwww.yahoo.com: %s\n", g_inet4_address_to_string (G_INET4_ADDRESS (address)));
101
102         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));
103
104         g_object_unref (address);
105
106         g_resolver_resolve_list_async (resolver, "www.google.com", NULL, resolve_callback, NULL);
107
108         g_main_loop_run (loop);
109
110         return 0;
111 }