ofdbus/dbus-glib/tsrc/testapps/dbus_glib_signal_server1/src/dbus_glib_signal_server1.c
changeset 0 e4d67989cc36
child 50 79045913e4e9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ofdbus/dbus-glib/tsrc/testapps/dbus_glib_signal_server1/src/dbus_glib_signal_server1.c	Tue Feb 02 02:01:42 2010 +0200
@@ -0,0 +1,134 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <string.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <dbus/dbus-glib-bindings.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+
+
+int signal_first;
+
+	
+static void
+hello_signal_handler (DBusGProxy *proxy, const char *hello_string, gpointer user_data)
+{
+  	FILE* fp = fopen("c:\\signal1.txt", "a+");
+  	if(fp)
+  		{
+  		fprintf(fp, "Signal Received in first handler : %s\n", hello_string);
+  		fclose(fp);
+  		}
+	fprintf (fp,"Received signal and it says: %s\n", hello_string);
+	signal_first++;
+	fclose(fp);
+}
+
+static void
+hello_signal_handler1 (DBusGProxy *proxy, const char *hello_string, gpointer user_data)
+{
+	static int signal_second = 0;
+	int res = 0;
+  	FILE* fp = fopen("c:\\signal1.txt", "a+");
+  	
+  	const char* fifopath = "C:\\mkfifo6.file";
+  	int err;
+	int fd;
+	char* buf1 = NULL;
+	
+  	if(fp)
+  		{
+  		fprintf(fp, "Signal Received in second handler : %s\n", hello_string);
+  		fclose(fp);
+  		}
+  	dbus_g_proxy_disconnect_signal (proxy, "HelloSignal", G_CALLBACK (hello_signal_handler), NULL);
+	fprintf (fp,"Received signal and it says: %s\n", hello_string);
+	
+	signal_second++;
+	if(signal_second == 2)
+	{
+		fd = open(fifopath, O_WRONLY);
+		if(fd > 0)
+		{
+			if(signal_first == 1)
+				buf1 = "1";
+			if(signal_first == 2)
+				buf1 = "2";
+			if(signal_first == 0)
+				buf1 = "0";
+			err = write (fd, buf1, strlen(buf1));
+			close(fd);
+		}
+		
+	}
+}
+
+
+int main()
+{
+
+	DBusGConnection *bus;
+	GMainLoop *mainLoop = NULL;
+	DBusGProxy* proxy;
+	GError *error = NULL;
+	int fd;
+	const char* fifopath = "C:\\mkfifo8.file";
+	const char* buf1 = "done";
+	int err;
+	g_type_init();
+
+
+	bus = dbus_g_bus_get(DBUS_BUS_SESSION,NULL);
+
+	proxy = dbus_g_proxy_new_for_name (bus,
+		     "org.designfu.TestService",
+		     "/org/designfu/TestService/object",
+		     "org.designfu.TestService");
+
+	/* Tell DBus what the type signature of the signal callback is; this
+	   * allows us to sanity-check incoming messages before invoking the
+	   * callback.  You need to do this once for each proxy you create,
+	   * not every time you want to connect to the signal.
+	   */
+	  dbus_g_proxy_add_signal (proxy, "HelloSignal", G_TYPE_STRING, G_TYPE_INVALID);
+
+	  /* Actually connect to the signal.  Note you can call
+	   * dbus_g_proxy_connect_signal multiple times for one invocation of
+	   * dbus_g_proxy_add_signal.
+	   */
+	  dbus_g_proxy_connect_signal (proxy, "HelloSignal", G_CALLBACK (hello_signal_handler),
+				       NULL, NULL);
+	  dbus_g_proxy_connect_signal (proxy, "HelloSignal", G_CALLBACK (hello_signal_handler1),
+		       NULL, NULL);
+	  fd = open(fifopath, O_WRONLY);
+      if (fd > 0)
+          {
+          err = write(fd, buf1, strlen(buf1));
+          close(fd);
+          }
+	mainLoop = g_main_loop_new(NULL,FALSE);
+	g_main_loop_run(mainLoop);
+	
+	return 0;
+}
+