diff -r 000000000000 -r e4d67989cc36 ofdbus/dbus-glib/tsrc/testapps/dbus_glib_signal_server1/src/dbus_glib_signal_server1.c --- /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 +#include +#include +#include +#include +#include +#include +#include + + + +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; +} +