1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/ossrv/ofdbus/dbus/tsrc/testapps/method1/src/method1.c Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,314 @@
1.4 +/*
1.5 +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
1.6 +* All rights reserved.
1.7 +* This component and the accompanying materials are made available
1.8 +* under the terms of "Eclipse Public License v1.0"
1.9 +* which accompanies this distribution, and is available
1.10 +* at the URL "http://www.eclipse.org/legal/epl-v10.html".
1.11 +*
1.12 +* Initial Contributors:
1.13 +* Nokia Corporation - initial contribution.
1.14 +*
1.15 +* Contributors:
1.16 +*
1.17 +* Description:
1.18 +*
1.19 +*/
1.20 +
1.21 +
1.22 +//#include<stdio.h>
1.23 +#include "test-utils.h"
1.24 +#include<string.h>
1.25 +#include<ctype.h>
1.26 +#include<unistd.h> // sleep function is defined in this header file
1.27 +#define TEST_BUS_NAME_TEMP "Test.Method.Call1"
1.28 +dbus_bool_t message_is_error;
1.29 +
1.30 +
1.31 +void called_file_writecontact(DBusMessage* msg,DBusConnection* connection)
1.32 + {
1.33 + FILE *fp;
1.34 +
1.35 + char* str;
1.36 + dbus_int32_t cnt;
1.37 + DBusMessage* reply;
1.38 + DBusMessageIter iter;
1.39 + DBusMessageIter sub_iter;
1.40 +
1.41 + dbus_message_iter_init(msg, &iter);
1.42 +
1.43 +
1.44 + fp = fopen("c:\\data.txt","a+");
1.45 + do{
1.46 + switch(dbus_message_iter_get_arg_type(&iter))
1.47 + {
1.48 +
1.49 +
1.50 +
1.51 + case DBUS_TYPE_STRUCT:
1.52 + dbus_message_iter_recurse(&iter, &sub_iter);
1.53 + do{
1.54 + switch(dbus_message_iter_get_arg_type(&sub_iter))
1.55 + {
1.56 + case DBUS_TYPE_INT32:
1.57 + dbus_message_iter_get_basic(&sub_iter, &cnt);
1.58 + fwrite(&cnt, sizeof(cnt),1,fp);
1.59 + break;
1.60 + case DBUS_TYPE_STRING:
1.61 + dbus_message_iter_get_basic(&sub_iter, &str);
1.62 + fwrite(str, strlen(str),1,fp);
1.63 + }
1.64 + fwrite("\n", strlen("\n"),1,fp);
1.65 + }while(dbus_message_iter_next(&sub_iter));
1.66 +
1.67 + break;
1.68 + default:
1.69 + fprintf(stdout,"no input");
1.70 +
1.71 + }
1.72 + }while(dbus_message_iter_next(&iter));
1.73 + reply = dbus_message_new_method_return(msg);
1.74 +
1.75 + dbus_message_append_args(reply, DBUS_TYPE_INT32, &cnt, DBUS_TYPE_INVALID);
1.76 + dbus_connection_send(connection, reply, NULL);
1.77 + dbus_connection_flush(connection);
1.78 + }
1.79 +
1.80 +void called_dbus_connection_borrow_message0(DBusMessage* msg,DBusConnection* connection)
1.81 + {
1.82 + DBusMessage* reply;
1.83 + dbus_int32_t return_value = 9090;
1.84 +
1.85 + reply = dbus_message_new_method_return(msg);
1.86 +
1.87 + dbus_message_append_args(reply, DBUS_TYPE_INT32, &return_value, DBUS_TYPE_INVALID);
1.88 + dbus_connection_send(connection, reply, NULL);
1.89 + dbus_connection_flush(connection);
1.90 + }
1.91 +void called_dbus_connection_pop_message0(DBusMessage* msg,DBusConnection* connection)
1.92 + {
1.93 + DBusMessage* reply;
1.94 + dbus_int32_t return_value = 9090;
1.95 +
1.96 + reply = dbus_message_new_method_return(msg);
1.97 +
1.98 + dbus_message_append_args(reply, DBUS_TYPE_INT32, &return_value, DBUS_TYPE_INVALID);
1.99 + dbus_connection_send(connection, reply, NULL);
1.100 + dbus_connection_flush(connection);
1.101 + }
1.102 +void called_dbus_connection_steal_borrowed_message0(DBusMessage* msg,DBusConnection* connection)
1.103 + {
1.104 + DBusMessage* reply;
1.105 + dbus_int32_t return_value = 9090;
1.106 +
1.107 + reply = dbus_message_new_method_return(msg);
1.108 +
1.109 + dbus_message_append_args(reply, DBUS_TYPE_INT32, &return_value, DBUS_TYPE_INVALID);
1.110 + dbus_connection_send(connection, reply, NULL);
1.111 + dbus_connection_flush(connection);
1.112 + }
1.113 +void called_dbus_connection_return_message0(DBusMessage* msg,DBusConnection* connection)
1.114 + {
1.115 + DBusMessage* reply;
1.116 +
1.117 + reply = dbus_message_new_method_return(msg);
1.118 +
1.119 + dbus_connection_send(connection, reply, NULL);
1.120 + dbus_connection_flush(connection);
1.121 + }
1.122 +void called_dbus_message_new_error_printf0(DBusMessage* msg,DBusConnection* connection)
1.123 + {
1.124 + char err_succes[]={"ERROR IS SAME"};
1.125 +
1.126 + char err_failed[]= {"MISMATCH IN ERROR"};//'M','i','s','m','a','t','c','h',' ','i','n',' ' ,'e','r','r','o','r'
1.127 + const char* errorname;
1.128 + FILE *fp;
1.129 +
1.130 + DBusMessage* err_msg;
1.131 + const char* error_name;
1.132 + const char* error_message;
1.133 + dbus_int32_t return_value =9090;
1.134 + errorname = "dbus.test.error1";
1.135 + /* change the error name so that err_failed is printed
1.136 + * for eg: errorname = "dbus.test.error1"
1.137 + *
1.138 + */
1.139 +
1.140 + error_name = "dbus.test.error";
1.141 + error_message = "dbus.message";
1.142 +
1.143 + fp = fopen("c:\\method1newerror.txt","w");
1.144 +
1.145 + err_msg = dbus_message_new_error(msg,error_name,error_message);
1.146 + message_is_error=dbus_message_is_error(err_msg ,errorname);
1.147 + if(message_is_error)
1.148 + {
1.149 + fwrite(err_succes,1,sizeof(err_succes),fp);
1.150 +
1.151 + fclose(fp);
1.152 + }
1.153 + else
1.154 + {
1.155 + fwrite(err_failed,1,sizeof(err_failed),fp);
1.156 + fclose(fp);
1.157 + }
1.158 +
1.159 +
1.160 +
1.161 +
1.162 + dbus_connection_send(connection, err_msg, NULL);
1.163 + dbus_connection_flush(connection);
1.164 + }
1.165 +
1.166 +void called_dbus_message_get_no_reply0(DBusMessage* msg,DBusConnection* connection)
1.167 + {
1.168 + dbus_bool_t nomsg = FALSE;
1.169 + char err_succes[]={"Set reply is set/reply not required"};
1.170 + char err_fail[]={"Set reply is not been set/reply may be sent"};
1.171 +
1.172 + dbus_int32_t return_value = 9090;
1.173 + FILE *fp;
1.174 + fp = fopen("c:\\msggetnorply.txt","w");
1.175 +
1.176 +
1.177 +
1.178 + nomsg = dbus_message_get_no_reply(msg) ;
1.179 + if(nomsg)
1.180 + {
1.181 + fwrite(err_succes,1,sizeof(err_succes),fp);
1.182 + fclose(fp);
1.183 + }
1.184 + else
1.185 + {
1.186 + fwrite(err_fail,1,sizeof(err_fail),fp);
1.187 + fclose(fp);
1.188 + }
1.189 +
1.190 +
1.191 + dbus_connection_flush(connection);
1.192 + }
1.193 +
1.194 +
1.195 +
1.196 +
1.197 +int main()
1.198 +{
1.199 + DBusError error;
1.200 + DBusError error1;
1.201 + DBusConnection* connection;
1.202 + DBusMessage* msg;
1.203 + DBusObjectPathVTable vtable;
1.204 +
1.205 + dbus_error_init(&error);
1.206 + dbus_error_init(&error1);
1.207 + fprintf(stdout, "Starting Method");
1.208 +
1.209 + connection = dbus_bus_get(DBUS_BUS_SESSION, &error);
1.210 +
1.211 + if(dbus_error_is_set(&error))
1.212 + {
1.213 + fprintf(stdout, "Error Occured :: %s", error.name);
1.214 + return 1;
1.215 + }
1.216 +
1.217 +
1.218 +
1.219 + if(dbus_connection_register_object_path (connection, "/Test/Method/Object", &vtable, NULL))
1.220 + {
1.221 + fprintf(stdout, "Object Path registered.");
1.222 + }
1.223 + else
1.224 + {
1.225 + fprintf(stdout, "Object Path not able to register.");
1.226 + return 1;
1.227 + }
1.228 +
1.229 +
1.230 +
1.231 + if(dbus_bus_request_name (connection, TEST_BUS_NAME_TEMP, DBUS_NAME_FLAG_ALLOW_REPLACEMENT, &error1) == -1)
1.232 + {
1.233 + fprintf(stdout, "Not able to request name.");
1.234 + }
1.235 + else
1.236 + {
1.237 + fprintf(stdout, "Name Request Successful");
1.238 + }
1.239 +
1.240 + while(TRUE)
1.241 + {
1.242 + dbus_connection_read_write(connection, 0);
1.243 +
1.244 + msg = dbus_connection_pop_message(connection);
1.245 +
1.246 + if(msg == NULL)
1.247 + {
1.248 + sleep(1);
1.249 + continue;
1.250 + }
1.251 +
1.252 + fprintf(stdout, "Message Detected");
1.253 +
1.254 + if(DBUS_MESSAGE_TYPE_SIGNAL == dbus_message_get_type(msg))
1.255 + {
1.256 + fprintf(stdout, "Message is Signal.");
1.257 + }
1.258 +
1.259 + if(DBUS_MESSAGE_TYPE_METHOD_CALL == dbus_message_get_type(msg))
1.260 + {
1.261 + fprintf(stdout, "Message is Method call.");
1.262 + }
1.263 + if(dbus_message_is_method_call(msg, "test.Method.Call", "file_writecontact"))
1.264 + {
1.265 +
1.266 + called_file_writecontact(msg, connection);
1.267 + break;
1.268 + }
1.269 +
1.270 +
1.271 +
1.272 + if(dbus_message_is_method_call(msg, "test.Method.Call", "dbus_connection_borrow_message0"))
1.273 + {
1.274 +
1.275 + called_dbus_connection_borrow_message0(msg, connection);
1.276 +
1.277 + }
1.278 +
1.279 + if(dbus_message_is_method_call(msg, "test.Method.Call", "dbus_connection_pop_message0"))
1.280 + {
1.281 +
1.282 + called_dbus_connection_pop_message0(msg, connection);
1.283 +
1.284 + }
1.285 +
1.286 + if(dbus_message_is_method_call(msg, "test.Method.Call", "dbus_connection_steal_borrowed_message0"))
1.287 + {
1.288 +
1.289 + called_dbus_connection_steal_borrowed_message0(msg, connection);
1.290 +
1.291 + }
1.292 + if(dbus_message_is_method_call(msg, "test.Method.Call", "dbus_connection_return_message0"))
1.293 + {
1.294 +
1.295 + called_dbus_connection_return_message0(msg, connection);
1.296 +
1.297 + }
1.298 + if(dbus_message_is_method_call(msg, "test.Method.Call", "dbus_message_new_error_printf0"))
1.299 + {
1.300 + called_dbus_message_new_error_printf0(msg, connection);
1.301 +
1.302 + }
1.303 +
1.304 +
1.305 +
1.306 + if(dbus_message_is_method_call(msg, "test.Method.Call", "dbus_message_get_no_reply0"))
1.307 + {
1.308 +
1.309 + called_dbus_message_get_no_reply0(msg, connection);
1.310 + break;
1.311 + }
1.312 + dbus_message_unref(msg);
1.313 + }
1.314 +
1.315 + dbus_connection_unref(connection);
1.316 + return 0;
1.317 +}