Update contrib.
2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
4 * This component and the accompanying materials are made available
5 * under the terms of "Eclipse Public License v1.0"
6 * which accompanies this distribution, and is available
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
9 * Initial Contributors:
10 * Nokia Corporation - initial contribution.
20 #include "test-utils.h"
24 #define TEST_BUS_NAME_TEMP "Test.Method.Call"
26 void called_method(DBusMessage* msg, DBusConnection* connection)
30 DBusMessageIter in_args;
35 dbus_uint32_t status = 94;
37 dbus_error_init(&error);
38 dbus_message_iter_init(msg, &in_args);
40 reply = dbus_message_new_method_return(msg);
41 dbus_message_iter_init_append(reply, &args);
44 dbus_message_iter_get_basic(&in_args, &in_str);
46 dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &in_str);
48 }while(dbus_message_iter_next(&in_args));
50 dbus_connection_send(connection, reply, NULL);
52 dbus_connection_flush(connection);
56 void called_variable_args_method(DBusMessage* msg, DBusConnection* connection)
60 DBusMessageIter sub_iter;
61 void* arg = malloc(20);
66 dbus_int32_t return_value = 0;
67 dbus_bool_t valid_flag = TRUE;
72 reply = dbus_message_new_method_return(msg);
73 dbus_message_iter_init(msg, &iter);
76 switch(dbus_message_iter_get_arg_type(&iter))
78 case DBUS_TYPE_BOOLEAN:
79 dbus_message_iter_get_basic(&iter, arg);
80 if(*(dbus_bool_t*)arg != TRUE)
84 dbus_message_iter_get_basic(&iter, arg);
85 if(*(dbus_int16_t*)arg != -16)
89 dbus_message_iter_get_basic(&iter, arg);
90 if(*(dbus_int32_t*)arg != -32)
94 dbus_message_iter_get_basic(&iter, arg);
95 if(*(dbus_int64_t*)arg != -64)
98 case DBUS_TYPE_UINT16:
99 dbus_message_iter_get_basic(&iter, arg);
100 if(*(dbus_uint16_t*)arg != 16)
103 case DBUS_TYPE_UINT32:
104 dbus_message_iter_get_basic(&iter, arg);
105 if(*(dbus_uint32_t*)arg != 32)
108 case DBUS_TYPE_UINT64:
109 dbus_message_iter_get_basic(&iter, arg);
110 if(*(dbus_uint64_t*)arg != 64)
113 case DBUS_TYPE_DOUBLE:
114 dbus_message_iter_get_basic(&iter, arg);
115 if(*(double*)arg != 12.34567)
118 case DBUS_TYPE_STRING:
119 dbus_message_iter_get_basic(&iter, &str);
120 if(strcmp("DBus Testing", str))
123 case DBUS_TYPE_ARRAY:
124 dbus_message_iter_recurse(&iter, &sub_iter);
125 no = dbus_message_iter_get_array_len(&sub_iter);
126 dbus_message_iter_get_fixed_array(&sub_iter, &array, &no);
128 if(array[i] != (i+1))
131 case DBUS_TYPE_STRUCT:
132 dbus_message_iter_recurse(&iter, &sub_iter);
134 switch(dbus_message_iter_get_arg_type(&sub_iter))
136 case DBUS_TYPE_INT32:
137 dbus_message_iter_get_basic(&sub_iter, arg);
138 if(*(dbus_int32_t*)arg != -32)
141 case DBUS_TYPE_STRING:
142 dbus_message_iter_get_basic(&sub_iter, &str);
143 if(strcmp("DBus Testing", str))
146 case DBUS_TYPE_DOUBLE:
147 dbus_message_iter_get_basic(&sub_iter, arg);
148 if(*(double*)arg != 12.34567)
155 }while(dbus_message_iter_next(&sub_iter));
161 }while(dbus_message_iter_next(&iter));
168 dbus_message_append_args(reply, DBUS_TYPE_INT32, &return_value, DBUS_TYPE_INVALID);
169 dbus_connection_send(connection, reply, NULL);
170 dbus_connection_flush(connection);
173 void called_simple(DBusMessage* msg, DBusConnection* connection)
176 dbus_int32_t return_value = 9090;
178 reply = dbus_message_new_method_return(msg);
180 dbus_message_append_args(reply, DBUS_TYPE_INT32, &return_value, DBUS_TYPE_INVALID);
181 dbus_connection_send(connection, reply, NULL);
182 dbus_connection_flush(connection);
186 void called_file_send(DBusMessage* msg, DBusConnection* connection)
189 int return_value = 8080;
190 DBusMessageIter iter;
191 DBusMessageIter sub_iter;
193 unsigned char* array;
196 dbus_message_iter_init(msg, &iter);
197 dbus_message_iter_recurse(&iter, &sub_iter);
198 no = dbus_message_iter_get_array_len(&sub_iter);
199 dbus_message_iter_get_fixed_array(&sub_iter, &array, &no);
201 fp = fopen("c:\\data\\images\\pictures\\bunbask1.jpg", "a+");
204 printf("Failed to open file");
208 fwrite(array, sizeof(unsigned char), no, fp);
213 reply = dbus_message_new_method_return(msg);
214 dbus_connection_send(connection, reply, NULL);
215 dbus_connection_flush(connection);
218 void called_file_send_time(DBusMessage* msg,DBusConnection* connection)
220 DBusMessageIter iter;
221 DBusMessageIter sub_iter;
223 unsigned char* array;
228 reply = dbus_message_new_method_return(msg);
229 dbus_connection_send(connection, reply, NULL);
230 dbus_connection_flush(connection);
232 dbus_message_iter_init(msg, &iter);
233 dbus_message_iter_get_basic(&iter, &file_name);
234 dbus_message_iter_next(&iter);
235 dbus_message_iter_recurse(&iter, &sub_iter);
236 no = dbus_message_iter_get_array_len(&sub_iter);
237 dbus_message_iter_get_fixed_array(&sub_iter, &array, &no);
239 strcat(file_name, "_1");
240 fp = fopen(file_name, "w+");
243 printf("Failed to open file %s", file_name);
247 fwrite(array, sizeof(unsigned char), no, fp);
252 void called_sign_test(DBusMessage* msg, DBusConnection* connection)
255 const char* signature;
256 const char* msg_sign;
257 const char* msg_sign1;
258 DBusSignatureIter sign_iter;
259 DBusSignatureIter sub_sign_iter;
260 DBusSignatureIter sub_sign_iter1;
261 DBusMessageIter iter;
265 const char* sub_signature;
267 dbus_error_init(&error);
269 dbus_message_iter_init(msg, &iter);
270 msg_sign = dbus_message_iter_get_signature(&iter);
271 dbus_message_iter_next(&iter);
272 dbus_message_iter_next(&iter);
273 msg_sign1 = dbus_message_iter_get_signature(&iter);
275 signature = dbus_message_get_signature(msg);
276 dbus_signature_iter_init(&sign_iter, signature);
277 if(dbus_signature_validate_single(signature, &error))
282 type = dbus_signature_iter_get_current_type(&sign_iter);
285 case DBUS_TYPE_ARRAY:
286 dbus_signature_iter_recurse(&sign_iter, &sub_sign_iter1);
287 sub_type = dbus_signature_iter_get_element_type(&sign_iter);
289 case DBUS_TYPE_STRUCT:
290 dbus_signature_iter_recurse(&sign_iter, &sub_sign_iter);
291 sub_signature = dbus_signature_iter_get_signature(&sign_iter);
292 dbus_error_init(&error);
293 if(!dbus_signature_validate_single(sub_signature, &error))
299 }while(dbus_signature_iter_next(&sign_iter));
301 reply = dbus_message_new_method_return(msg);
302 dbus_message_append_args(reply, DBUS_TYPE_SIGNATURE, &signature, DBUS_TYPE_SIGNATURE, &sub_signature, DBUS_TYPE_INT32, &sub_type, DBUS_TYPE_SIGNATURE, &msg_sign, DBUS_TYPE_SIGNATURE, &msg_sign1, DBUS_TYPE_INVALID);
303 dbus_connection_send(connection, reply, NULL);
304 dbus_connection_flush(connection);
306 dbus_free((void*)msg_sign);
307 dbus_free((void*)msg_sign1);
308 dbus_message_unref(reply);
311 void called_file_send_whole(DBusMessage* msg, DBusConnection* connection)
313 DBusMessageIter iter;
314 DBusMessageIter sub_iter;
316 unsigned char* array;
320 reply = dbus_message_new_method_return(msg);
321 dbus_connection_send(connection, reply, NULL);
322 dbus_connection_flush(connection);
324 dbus_message_iter_init(msg, &iter);
325 dbus_message_iter_recurse(&iter, &sub_iter);
326 no = dbus_message_iter_get_array_len(&sub_iter);
327 dbus_message_iter_get_fixed_array(&sub_iter, &array, &no);
329 fp = fopen("c:\\data\\Images\\Pictures\\test.mp3", "a+");
332 printf("Failed to open file");
336 fwrite(array, sizeof(unsigned char), no, fp);
341 dbus_message_unref(reply);
348 DBusConnection* connection;
350 DBusObjectPathVTable vtable =
355 dbus_error_init(&error);
356 dbus_error_init(&error1);
358 connection = dbus_bus_get(DBUS_BUS_SESSION, &error);
360 if(dbus_error_is_set(&error))
362 fprintf(stdout, "Error Occured :: %s", error.name);
368 if(dbus_connection_register_object_path (connection, "/Test/Method/Object", &vtable, NULL))
370 fprintf(stdout, "Object Path registered.");
374 fprintf(stdout, "Object Path not able to register.");
380 if(dbus_bus_request_name (connection, TEST_BUS_NAME_TEMP, DBUS_NAME_FLAG_ALLOW_REPLACEMENT, &error1) == -1)
382 fprintf(stdout, "Not able to request name.");
386 fprintf(stdout, "Name Request Successful");
391 dbus_connection_read_write(connection, 0);
393 msg = dbus_connection_pop_message(connection);
401 fprintf(stdout, "Message Detected");
403 if(DBUS_MESSAGE_TYPE_SIGNAL == dbus_message_get_type(msg))
405 fprintf(stdout, "Message is Signal.");
408 if(DBUS_MESSAGE_TYPE_METHOD_CALL == dbus_message_get_type(msg))
410 fprintf(stdout, "Message is Method call.");
414 if(dbus_message_is_method_call(msg, "test.Method.Call", "method"))
416 called_method(msg, connection);
420 if(dbus_message_is_method_call(msg, "test.Method.Call", "variable_args_method"))
423 called_variable_args_method(msg, connection);
427 if(dbus_message_is_method_call(msg, "test.Method.Call", "simple"))
430 called_simple(msg, connection);
433 if(dbus_message_is_method_call(msg, "test.Method.Call", "file_send"))
436 called_file_send(msg, connection);
439 if(dbus_message_is_method_call(msg, "test.Method.Call", "sign_test"))
442 called_sign_test(msg, connection);
445 if(dbus_message_is_method_call(msg, "test.Method.Call", "file_send_whole"))
448 called_file_send_whole(msg, connection);
452 if(dbus_message_is_method_call(msg, "test.Method.Call", "file_send_time"))
455 called_file_send_time(msg, connection);
459 dbus_message_unref(msg);
463 dbus_message_unref(msg);
464 dbus_bus_release_name(connection,TEST_BUS_NAME_TEMP,&error1);
465 dbus_connection_unregister_object_path(connection,"/Test/Method/Object");
467 dbus_connection_unref(connection);