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