X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gio%2Ftests%2Fsocket-common.c;h=e59fa9cd476c5616465392a551c6a6b675a87bc1;hb=a3d86afa81ff34ce797a3928fd619ead219a37af;hp=e06d5044124d894a7b009eb9718685a2521431b5;hpb=19d8cc33759e38a7cfcf7ddaa2e80e7c4ddc2d3c;p=platform%2Fupstream%2Fglib.git diff --git a/gio/tests/socket-common.c b/gio/tests/socket-common.c index e06d504..e59fa9c 100644 --- a/gio/tests/socket-common.c +++ b/gio/tests/socket-common.c @@ -1,5 +1,6 @@ /* #included into both socket-client.c and socket-server.c */ +#ifdef G_OS_UNIX static const char *unix_socket_address_types[] = { "invalid", "anonymous", @@ -7,11 +8,12 @@ static const char *unix_socket_address_types[] = { "abstract", "padded" }; +#endif static char * socket_address_to_string (GSocketAddress *address) { - char *res; + char *res = NULL; if (G_IS_INET_SOCKET_ADDRESS (address)) { @@ -25,6 +27,7 @@ socket_address_to_string (GSocketAddress *address) res = g_strdup_printf ("%s:%d", str, port); g_free (str); } +#ifdef G_OS_UNIX else if (G_IS_UNIX_SOCKET_ADDRESS (address)) { GUnixSocketAddress *uaddr = G_UNIX_SOCKET_ADDRESS (address); @@ -33,13 +36,15 @@ socket_address_to_string (GSocketAddress *address) unix_socket_address_types[g_unix_socket_address_get_address_type (uaddr)], g_unix_socket_address_get_path (uaddr)); } +#endif return res; } -GSocketAddress * +static GSocketAddress * socket_address_from_string (const char *name) { +#ifdef G_OS_UNIX int i, len; for (i = 0; i < G_N_ELEMENTS (unix_socket_address_types); i++) @@ -52,5 +57,67 @@ socket_address_from_string (const char *name) (GUnixSocketAddressType)i); } } +#endif + return NULL; +} + +static gboolean +source_ready (GPollableInputStream *stream, + gpointer data) +{ + g_main_loop_quit (loop); + return FALSE; +} + +static void +ensure_socket_condition (GSocket *socket, + GIOCondition condition, + GCancellable *cancellable) +{ + GSource *source; + + if (!non_blocking) + return; + + source = g_socket_create_source (socket, condition, cancellable); + g_source_set_callback (source, + (GSourceFunc) source_ready, + NULL, NULL); + g_source_attach (source, NULL); + g_source_unref (source); + g_main_loop_run (loop); +} + +static void +ensure_connection_condition (GIOStream *stream, + GIOCondition condition, + GCancellable *cancellable) +{ + GSource *source; + + if (!non_blocking) + return; + + if (condition & G_IO_IN) + source = g_pollable_input_stream_create_source (G_POLLABLE_INPUT_STREAM (g_io_stream_get_input_stream (stream)), cancellable); + else + source = g_pollable_output_stream_create_source (G_POLLABLE_OUTPUT_STREAM (g_io_stream_get_output_stream (stream)), cancellable); + + g_source_set_callback (source, + (GSourceFunc) source_ready, + NULL, NULL); + g_source_attach (source, NULL); + g_source_unref (source); + g_main_loop_run (loop); +} + +static gpointer +cancel_thread (gpointer data) +{ + GCancellable *cancellable = data; + + g_usleep (1000*1000*cancel_timeout); + g_print ("Cancelling\n"); + g_cancellable_cancel (cancellable); return NULL; }