Main Page   Modules   Data Structures   File List   Data Fields   Related Pages  

test-thread-client.c

00001 #include <glib.h>
00002 #include "dbus-glib.h"
00003 #include <stdio.h>
00004 #include <string.h>
00005 #include <unistd.h>
00006 
00007 #include "test-thread.h"
00008 
00009 DBusConnection *connection;
00010 
00011 static  gpointer
00012 thread_func (gpointer data)
00013 {
00014   gint32 threadnr = GPOINTER_TO_INT (data);
00015   guint32 counter = 0;
00016   DBusMessageIter iter;
00017   DBusMessage *message;
00018   char *str;
00019 
00020   while (1)
00021     {
00022       message = dbus_message_new ("org.freedesktop.ThreadTest", NULL);
00023 
00024       dbus_message_append_iter_init (message, &iter);
00025 
00026       if (!dbus_message_iter_append_int32 (&iter, threadnr))
00027         {
00028           g_print ("thread %d: append threadnr failed\n", threadnr);
00029         }
00030       
00031       if (!dbus_message_iter_append_uint32 (&iter, counter))
00032         {
00033           g_print ("thread %d: append counter (%d) failed\n", threadnr, counter);
00034         }
00035       
00036       str = g_strdup_printf ("Thread %d-%d\n", threadnr, counter);
00037       if (!dbus_message_iter_append_string (&iter, str))
00038         {
00039           g_print ("thread %d: append string (%s) failed\n", threadnr, str);
00040         }
00041       g_free (str);
00042 
00043       if (!dbus_connection_send (connection,
00044                                  message,
00045                                  NULL))
00046         {
00047           g_print ("thread %d: send message failed\n", threadnr);
00048         }
00049       
00050       dbus_message_unref (message);
00051       
00052       counter ++;
00053     }
00054 
00055   return NULL;
00056 }
00057 
00058 int
00059 main (int argc, char *argv[])
00060 {
00061   GMainLoop *loop;
00062   DBusError error;
00063   int i;
00064 
00065   g_thread_init (NULL);
00066   dbus_gthread_init ();
00067 
00068   if(argc < 2)
00069     {
00070       g_error("Need an address as argv[1]\n");
00071       return 1;
00072     }
00073 
00074   dbus_error_init (&error);
00075   connection = dbus_connection_open (argv[1], &error);
00076   if (connection == NULL)
00077     {
00078       g_printerr ("could not open connection: %s\n", error.message);
00079       dbus_error_free (&error);
00080       return 1;
00081     }
00082 
00083   dbus_connection_setup_with_g_main (connection, NULL);
00084 
00085   for (i = 0; i < N_TEST_THREADS; i++)
00086     {
00087       g_thread_create (thread_func, GINT_TO_POINTER (i), FALSE, NULL);
00088     }
00089 
00090   loop = g_main_loop_new (NULL, FALSE);
00091   g_main_run (loop);  
00092   
00093   return 0;
00094 }
00095   

Generated on Wed Jun 2 06:01:34 2004 for D-BUS by doxygen1.2.15