sl@0: /* sl@0: * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: * All rights reserved. sl@0: * This component and the accompanying materials are made available sl@0: * under the terms of "Eclipse Public License v1.0" sl@0: * which accompanies this distribution, and is available sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: * sl@0: * Initial Contributors: sl@0: * Nokia Corporation - initial contribution. sl@0: * sl@0: * Contributors: sl@0: * sl@0: * Description: sl@0: * sl@0: */ sl@0: sl@0: sl@0: //#include sl@0: #include "test-utils.h" sl@0: #include sl@0: #include sl@0: #include // sleep function is defined in this header file sl@0: #define TEST_BUS_NAME_TEMP "Test.Method.Call1" sl@0: dbus_bool_t message_is_error; sl@0: sl@0: sl@0: void called_file_writecontact(DBusMessage* msg,DBusConnection* connection) sl@0: { sl@0: FILE *fp; sl@0: sl@0: char* str; sl@0: dbus_int32_t cnt; sl@0: DBusMessage* reply; sl@0: DBusMessageIter iter; sl@0: DBusMessageIter sub_iter; sl@0: sl@0: dbus_message_iter_init(msg, &iter); sl@0: sl@0: sl@0: fp = fopen("c:\\data.txt","a+"); sl@0: do{ sl@0: switch(dbus_message_iter_get_arg_type(&iter)) sl@0: { sl@0: sl@0: sl@0: sl@0: case DBUS_TYPE_STRUCT: sl@0: dbus_message_iter_recurse(&iter, &sub_iter); sl@0: do{ sl@0: switch(dbus_message_iter_get_arg_type(&sub_iter)) sl@0: { sl@0: case DBUS_TYPE_INT32: sl@0: dbus_message_iter_get_basic(&sub_iter, &cnt); sl@0: fwrite(&cnt, sizeof(cnt),1,fp); sl@0: break; sl@0: case DBUS_TYPE_STRING: sl@0: dbus_message_iter_get_basic(&sub_iter, &str); sl@0: fwrite(str, strlen(str),1,fp); sl@0: } sl@0: fwrite("\n", strlen("\n"),1,fp); sl@0: }while(dbus_message_iter_next(&sub_iter)); sl@0: sl@0: break; sl@0: default: sl@0: fprintf(stdout,"no input"); sl@0: sl@0: } sl@0: }while(dbus_message_iter_next(&iter)); sl@0: reply = dbus_message_new_method_return(msg); sl@0: sl@0: dbus_message_append_args(reply, DBUS_TYPE_INT32, &cnt, DBUS_TYPE_INVALID); sl@0: dbus_connection_send(connection, reply, NULL); sl@0: dbus_connection_flush(connection); sl@0: } sl@0: sl@0: void called_dbus_connection_borrow_message0(DBusMessage* msg,DBusConnection* connection) sl@0: { sl@0: DBusMessage* reply; sl@0: dbus_int32_t return_value = 9090; sl@0: sl@0: reply = dbus_message_new_method_return(msg); sl@0: sl@0: dbus_message_append_args(reply, DBUS_TYPE_INT32, &return_value, DBUS_TYPE_INVALID); sl@0: dbus_connection_send(connection, reply, NULL); sl@0: dbus_connection_flush(connection); sl@0: } sl@0: void called_dbus_connection_pop_message0(DBusMessage* msg,DBusConnection* connection) sl@0: { sl@0: DBusMessage* reply; sl@0: dbus_int32_t return_value = 9090; sl@0: sl@0: reply = dbus_message_new_method_return(msg); sl@0: sl@0: dbus_message_append_args(reply, DBUS_TYPE_INT32, &return_value, DBUS_TYPE_INVALID); sl@0: dbus_connection_send(connection, reply, NULL); sl@0: dbus_connection_flush(connection); sl@0: } sl@0: void called_dbus_connection_steal_borrowed_message0(DBusMessage* msg,DBusConnection* connection) sl@0: { sl@0: DBusMessage* reply; sl@0: dbus_int32_t return_value = 9090; sl@0: sl@0: reply = dbus_message_new_method_return(msg); sl@0: sl@0: dbus_message_append_args(reply, DBUS_TYPE_INT32, &return_value, DBUS_TYPE_INVALID); sl@0: dbus_connection_send(connection, reply, NULL); sl@0: dbus_connection_flush(connection); sl@0: } sl@0: void called_dbus_connection_return_message0(DBusMessage* msg,DBusConnection* connection) sl@0: { sl@0: DBusMessage* reply; sl@0: sl@0: reply = dbus_message_new_method_return(msg); sl@0: sl@0: dbus_connection_send(connection, reply, NULL); sl@0: dbus_connection_flush(connection); sl@0: } sl@0: void called_dbus_message_new_error_printf0(DBusMessage* msg,DBusConnection* connection) sl@0: { sl@0: char err_succes[]={"ERROR IS SAME"}; sl@0: sl@0: char err_failed[]= {"MISMATCH IN ERROR"};//'M','i','s','m','a','t','c','h',' ','i','n',' ' ,'e','r','r','o','r' sl@0: const char* errorname; sl@0: FILE *fp; sl@0: sl@0: DBusMessage* err_msg; sl@0: const char* error_name; sl@0: const char* error_message; sl@0: dbus_int32_t return_value =9090; sl@0: errorname = "dbus.test.error1"; sl@0: /* change the error name so that err_failed is printed sl@0: * for eg: errorname = "dbus.test.error1" sl@0: * sl@0: */ sl@0: sl@0: error_name = "dbus.test.error"; sl@0: error_message = "dbus.message"; sl@0: sl@0: fp = fopen("c:\\method1newerror.txt","w"); sl@0: sl@0: err_msg = dbus_message_new_error(msg,error_name,error_message); sl@0: message_is_error=dbus_message_is_error(err_msg ,errorname); sl@0: if(message_is_error) sl@0: { sl@0: fwrite(err_succes,1,sizeof(err_succes),fp); sl@0: sl@0: fclose(fp); sl@0: } sl@0: else sl@0: { sl@0: fwrite(err_failed,1,sizeof(err_failed),fp); sl@0: fclose(fp); sl@0: } sl@0: sl@0: sl@0: sl@0: sl@0: dbus_connection_send(connection, err_msg, NULL); sl@0: dbus_connection_flush(connection); sl@0: } sl@0: sl@0: void called_dbus_message_get_no_reply0(DBusMessage* msg,DBusConnection* connection) sl@0: { sl@0: dbus_bool_t nomsg = FALSE; sl@0: char err_succes[]={"Set reply is set/reply not required"}; sl@0: char err_fail[]={"Set reply is not been set/reply may be sent"}; sl@0: sl@0: dbus_int32_t return_value = 9090; sl@0: FILE *fp; sl@0: fp = fopen("c:\\msggetnorply.txt","w"); sl@0: sl@0: sl@0: sl@0: nomsg = dbus_message_get_no_reply(msg) ; sl@0: if(nomsg) sl@0: { sl@0: fwrite(err_succes,1,sizeof(err_succes),fp); sl@0: fclose(fp); sl@0: } sl@0: else sl@0: { sl@0: fwrite(err_fail,1,sizeof(err_fail),fp); sl@0: fclose(fp); sl@0: } sl@0: sl@0: sl@0: dbus_connection_flush(connection); sl@0: } sl@0: sl@0: sl@0: sl@0: sl@0: int main() sl@0: { sl@0: DBusError error; sl@0: DBusError error1; sl@0: DBusConnection* connection; sl@0: DBusMessage* msg; sl@0: DBusObjectPathVTable vtable; sl@0: sl@0: dbus_error_init(&error); sl@0: dbus_error_init(&error1); sl@0: fprintf(stdout, "Starting Method"); sl@0: sl@0: connection = dbus_bus_get(DBUS_BUS_SESSION, &error); sl@0: sl@0: if(dbus_error_is_set(&error)) sl@0: { sl@0: fprintf(stdout, "Error Occured :: %s", error.name); sl@0: return 1; sl@0: } sl@0: sl@0: sl@0: sl@0: if(dbus_connection_register_object_path (connection, "/Test/Method/Object", &vtable, NULL)) sl@0: { sl@0: fprintf(stdout, "Object Path registered."); sl@0: } sl@0: else sl@0: { sl@0: fprintf(stdout, "Object Path not able to register."); sl@0: return 1; sl@0: } sl@0: sl@0: sl@0: sl@0: if(dbus_bus_request_name (connection, TEST_BUS_NAME_TEMP, DBUS_NAME_FLAG_ALLOW_REPLACEMENT, &error1) == -1) sl@0: { sl@0: fprintf(stdout, "Not able to request name."); sl@0: } sl@0: else sl@0: { sl@0: fprintf(stdout, "Name Request Successful"); sl@0: } sl@0: sl@0: while(TRUE) sl@0: { sl@0: dbus_connection_read_write(connection, 0); sl@0: sl@0: msg = dbus_connection_pop_message(connection); sl@0: sl@0: if(msg == NULL) sl@0: { sl@0: sleep(1); sl@0: continue; sl@0: } sl@0: sl@0: fprintf(stdout, "Message Detected"); sl@0: sl@0: if(DBUS_MESSAGE_TYPE_SIGNAL == dbus_message_get_type(msg)) sl@0: { sl@0: fprintf(stdout, "Message is Signal."); sl@0: } sl@0: sl@0: if(DBUS_MESSAGE_TYPE_METHOD_CALL == dbus_message_get_type(msg)) sl@0: { sl@0: fprintf(stdout, "Message is Method call."); sl@0: } sl@0: if(dbus_message_is_method_call(msg, "test.Method.Call", "file_writecontact")) sl@0: { sl@0: sl@0: called_file_writecontact(msg, connection); sl@0: break; sl@0: } sl@0: sl@0: sl@0: sl@0: if(dbus_message_is_method_call(msg, "test.Method.Call", "dbus_connection_borrow_message0")) sl@0: { sl@0: sl@0: called_dbus_connection_borrow_message0(msg, connection); sl@0: sl@0: } sl@0: sl@0: if(dbus_message_is_method_call(msg, "test.Method.Call", "dbus_connection_pop_message0")) sl@0: { sl@0: sl@0: called_dbus_connection_pop_message0(msg, connection); sl@0: sl@0: } sl@0: sl@0: if(dbus_message_is_method_call(msg, "test.Method.Call", "dbus_connection_steal_borrowed_message0")) sl@0: { sl@0: sl@0: called_dbus_connection_steal_borrowed_message0(msg, connection); sl@0: sl@0: } sl@0: if(dbus_message_is_method_call(msg, "test.Method.Call", "dbus_connection_return_message0")) sl@0: { sl@0: sl@0: called_dbus_connection_return_message0(msg, connection); sl@0: sl@0: } sl@0: if(dbus_message_is_method_call(msg, "test.Method.Call", "dbus_message_new_error_printf0")) sl@0: { sl@0: called_dbus_message_new_error_printf0(msg, connection); sl@0: sl@0: } sl@0: sl@0: sl@0: sl@0: if(dbus_message_is_method_call(msg, "test.Method.Call", "dbus_message_get_no_reply0")) sl@0: { sl@0: sl@0: called_dbus_message_get_no_reply0(msg, connection); sl@0: break; sl@0: } sl@0: dbus_message_unref(msg); sl@0: } sl@0: sl@0: dbus_connection_unref(connection); sl@0: return 0; sl@0: }