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 sl@0: #define TEST_BUS_NAME_TEMP "Test.Method.Call" sl@0: sl@0: void called_method(DBusMessage* msg, DBusConnection* connection) sl@0: { sl@0: DBusMessage* reply; sl@0: DBusMessageIter args; sl@0: DBusMessageIter in_args; sl@0: sl@0: char* in_str; sl@0: DBusError error; sl@0: sl@0: dbus_uint32_t status = 94; sl@0: sl@0: dbus_error_init(&error); sl@0: dbus_message_iter_init(msg, &in_args); sl@0: sl@0: reply = dbus_message_new_method_return(msg); sl@0: dbus_message_iter_init_append(reply, &args); sl@0: sl@0: do{ sl@0: dbus_message_iter_get_basic(&in_args, &in_str); sl@0: sl@0: dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &in_str); sl@0: sl@0: }while(dbus_message_iter_next(&in_args)); sl@0: sl@0: dbus_connection_send(connection, reply, NULL); sl@0: sl@0: dbus_connection_flush(connection); sl@0: } sl@0: sl@0: sl@0: void called_variable_args_method(DBusMessage* msg, DBusConnection* connection) sl@0: { sl@0: DBusMessage* reply; sl@0: DBusMessageIter iter; sl@0: DBusMessageIter sub_iter; sl@0: void* arg = malloc(20); sl@0: char* str; sl@0: int no; sl@0: int i; sl@0: dbus_int32_t* array; sl@0: dbus_int32_t return_value = 0; sl@0: dbus_bool_t valid_flag = TRUE; sl@0: sl@0: sl@0: sl@0: sl@0: reply = dbus_message_new_method_return(msg); sl@0: dbus_message_iter_init(msg, &iter); sl@0: sl@0: do{ sl@0: switch(dbus_message_iter_get_arg_type(&iter)) sl@0: { sl@0: case DBUS_TYPE_BOOLEAN: sl@0: dbus_message_iter_get_basic(&iter, arg); sl@0: if(*(dbus_bool_t*)arg != TRUE) sl@0: valid_flag = FALSE; sl@0: break; sl@0: case DBUS_TYPE_INT16: sl@0: dbus_message_iter_get_basic(&iter, arg); sl@0: if(*(dbus_int16_t*)arg != -16) sl@0: valid_flag = FALSE; sl@0: break; sl@0: case DBUS_TYPE_INT32: sl@0: dbus_message_iter_get_basic(&iter, arg); sl@0: if(*(dbus_int32_t*)arg != -32) sl@0: valid_flag = FALSE; sl@0: break; sl@0: case DBUS_TYPE_INT64: sl@0: dbus_message_iter_get_basic(&iter, arg); sl@0: if(*(dbus_int64_t*)arg != -64) sl@0: valid_flag = FALSE; sl@0: break; sl@0: case DBUS_TYPE_UINT16: sl@0: dbus_message_iter_get_basic(&iter, arg); sl@0: if(*(dbus_uint16_t*)arg != 16) sl@0: valid_flag = FALSE; sl@0: break; sl@0: case DBUS_TYPE_UINT32: sl@0: dbus_message_iter_get_basic(&iter, arg); sl@0: if(*(dbus_uint32_t*)arg != 32) sl@0: valid_flag = FALSE; sl@0: break; sl@0: case DBUS_TYPE_UINT64: sl@0: dbus_message_iter_get_basic(&iter, arg); sl@0: if(*(dbus_uint64_t*)arg != 64) sl@0: valid_flag = FALSE; sl@0: break; sl@0: case DBUS_TYPE_DOUBLE: sl@0: dbus_message_iter_get_basic(&iter, arg); sl@0: if(*(double*)arg != 12.34567) sl@0: valid_flag = FALSE; sl@0: break; sl@0: case DBUS_TYPE_STRING: sl@0: dbus_message_iter_get_basic(&iter, &str); sl@0: if(strcmp("DBus Testing", str)) sl@0: valid_flag = FALSE; sl@0: break; sl@0: case DBUS_TYPE_ARRAY: sl@0: dbus_message_iter_recurse(&iter, &sub_iter); sl@0: no = dbus_message_iter_get_array_len(&sub_iter); sl@0: dbus_message_iter_get_fixed_array(&sub_iter, &array, &no); sl@0: for(i=0;i