os/ossrv/ofdbus/dbus/tsrc/testapps/method1/src/method1.c
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
/*
sl@0
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     3
* All rights reserved.
sl@0
     4
* This component and the accompanying materials are made available
sl@0
     5
* under the terms of "Eclipse Public License v1.0"
sl@0
     6
* which accompanies this distribution, and is available
sl@0
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     8
*
sl@0
     9
* Initial Contributors:
sl@0
    10
* Nokia Corporation - initial contribution.
sl@0
    11
*
sl@0
    12
* Contributors:
sl@0
    13
*
sl@0
    14
* Description: 
sl@0
    15
*
sl@0
    16
*/
sl@0
    17
sl@0
    18
sl@0
    19
//#include<stdio.h>  
sl@0
    20
#include "test-utils.h"
sl@0
    21
#include<string.h> 
sl@0
    22
#include<ctype.h>
sl@0
    23
#include<unistd.h>  // sleep function is defined in this header file 
sl@0
    24
#define TEST_BUS_NAME_TEMP "Test.Method.Call1"
sl@0
    25
dbus_bool_t message_is_error;
sl@0
    26
 
sl@0
    27
sl@0
    28
void called_file_writecontact(DBusMessage* msg,DBusConnection* connection)
sl@0
    29
	{
sl@0
    30
	FILE *fp;  
sl@0
    31
sl@0
    32
	char* str;
sl@0
    33
	dbus_int32_t cnt;
sl@0
    34
	DBusMessage* reply;
sl@0
    35
	DBusMessageIter iter;
sl@0
    36
	DBusMessageIter sub_iter;
sl@0
    37
	
sl@0
    38
	dbus_message_iter_init(msg, &iter);   
sl@0
    39
	
sl@0
    40
	
sl@0
    41
	fp = fopen("c:\\data.txt","a+");
sl@0
    42
	do{
sl@0
    43
		switch(dbus_message_iter_get_arg_type(&iter))
sl@0
    44
		{
sl@0
    45
			
sl@0
    46
		
sl@0
    47
		
sl@0
    48
		case DBUS_TYPE_STRUCT: 
sl@0
    49
			dbus_message_iter_recurse(&iter, &sub_iter);
sl@0
    50
			do{
sl@0
    51
					switch(dbus_message_iter_get_arg_type(&sub_iter))
sl@0
    52
					{
sl@0
    53
					case DBUS_TYPE_INT32:
sl@0
    54
						dbus_message_iter_get_basic(&sub_iter, &cnt);
sl@0
    55
						fwrite(&cnt, sizeof(cnt),1,fp);
sl@0
    56
						break;
sl@0
    57
					case DBUS_TYPE_STRING:
sl@0
    58
						dbus_message_iter_get_basic(&sub_iter, &str);
sl@0
    59
						fwrite(str, strlen(str),1,fp);
sl@0
    60
					} 
sl@0
    61
					fwrite("\n", strlen("\n"),1,fp);
sl@0
    62
			}while(dbus_message_iter_next(&sub_iter));
sl@0
    63
			
sl@0
    64
			break;  
sl@0
    65
		default: 
sl@0
    66
		fprintf(stdout,"no input"); 
sl@0
    67
 
sl@0
    68
		}
sl@0
    69
	}while(dbus_message_iter_next(&iter));
sl@0
    70
	reply = dbus_message_new_method_return(msg);
sl@0
    71
	
sl@0
    72
	dbus_message_append_args(reply, DBUS_TYPE_INT32, &cnt, DBUS_TYPE_INVALID);
sl@0
    73
	dbus_connection_send(connection, reply, NULL);
sl@0
    74
	dbus_connection_flush(connection); 
sl@0
    75
	}
sl@0
    76
	
sl@0
    77
void called_dbus_connection_borrow_message0(DBusMessage* msg,DBusConnection* connection)
sl@0
    78
	{
sl@0
    79
		DBusMessage* reply;	
sl@0
    80
		dbus_int32_t return_value = 9090;
sl@0
    81
	
sl@0
    82
		reply = dbus_message_new_method_return(msg);
sl@0
    83
		
sl@0
    84
		dbus_message_append_args(reply, DBUS_TYPE_INT32, &return_value, DBUS_TYPE_INVALID);
sl@0
    85
		dbus_connection_send(connection, reply, NULL); 
sl@0
    86
		dbus_connection_flush(connection); 
sl@0
    87
	}
sl@0
    88
void called_dbus_connection_pop_message0(DBusMessage* msg,DBusConnection* connection)
sl@0
    89
	{
sl@0
    90
	DBusMessage* reply;	
sl@0
    91
	dbus_int32_t return_value = 9090;
sl@0
    92
sl@0
    93
	reply = dbus_message_new_method_return(msg);
sl@0
    94
	
sl@0
    95
	dbus_message_append_args(reply, DBUS_TYPE_INT32, &return_value, DBUS_TYPE_INVALID);
sl@0
    96
	dbus_connection_send(connection, reply, NULL);
sl@0
    97
	dbus_connection_flush(connection);
sl@0
    98
	}
sl@0
    99
void called_dbus_connection_steal_borrowed_message0(DBusMessage* msg,DBusConnection* connection)
sl@0
   100
	{
sl@0
   101
	DBusMessage* reply;	
sl@0
   102
	dbus_int32_t return_value = 9090;
sl@0
   103
sl@0
   104
	reply = dbus_message_new_method_return(msg);
sl@0
   105
	
sl@0
   106
	dbus_message_append_args(reply, DBUS_TYPE_INT32, &return_value, DBUS_TYPE_INVALID);
sl@0
   107
	dbus_connection_send(connection, reply, NULL);
sl@0
   108
	dbus_connection_flush(connection);
sl@0
   109
	}
sl@0
   110
void called_dbus_connection_return_message0(DBusMessage* msg,DBusConnection* connection)
sl@0
   111
	{
sl@0
   112
	DBusMessage* reply;	
sl@0
   113
	
sl@0
   114
	reply = dbus_message_new_method_return(msg);
sl@0
   115
sl@0
   116
	dbus_connection_send(connection, reply, NULL);
sl@0
   117
	dbus_connection_flush(connection);
sl@0
   118
	}
sl@0
   119
void called_dbus_message_new_error_printf0(DBusMessage* msg,DBusConnection* connection)
sl@0
   120
	{
sl@0
   121
		char err_succes[]={"ERROR IS SAME"};
sl@0
   122
		
sl@0
   123
		char err_failed[]= {"MISMATCH IN ERROR"};//'M','i','s','m','a','t','c','h',' ','i','n',' ' ,'e','r','r','o','r'
sl@0
   124
		const char* errorname;
sl@0
   125
		FILE *fp;
sl@0
   126
		
sl@0
   127
		DBusMessage* err_msg;
sl@0
   128
		const char* error_name; 
sl@0
   129
		const char* error_message;
sl@0
   130
		dbus_int32_t return_value =9090;
sl@0
   131
		errorname = "dbus.test.error1";
sl@0
   132
		/* change the error name so that err_failed is printed
sl@0
   133
		 * for eg: errorname = "dbus.test.error1"
sl@0
   134
		 * 
sl@0
   135
		      */
sl@0
   136
		
sl@0
   137
		error_name = "dbus.test.error";  
sl@0
   138
		error_message = "dbus.message";
sl@0
   139
		
sl@0
   140
		fp = fopen("c:\\method1newerror.txt","w");
sl@0
   141
	
sl@0
   142
		err_msg = dbus_message_new_error(msg,error_name,error_message);  
sl@0
   143
		message_is_error=dbus_message_is_error(err_msg ,errorname);
sl@0
   144
		if(message_is_error)
sl@0
   145
			{
sl@0
   146
				fwrite(err_succes,1,sizeof(err_succes),fp); 
sl@0
   147
				
sl@0
   148
				fclose(fp);
sl@0
   149
			}
sl@0
   150
		else 
sl@0
   151
			{ 
sl@0
   152
			fwrite(err_failed,1,sizeof(err_failed),fp);  
sl@0
   153
			fclose(fp);
sl@0
   154
			}
sl@0
   155
		 
sl@0
   156
		   
sl@0
   157
		
sl@0
   158
	
sl@0
   159
		dbus_connection_send(connection, err_msg, NULL); 
sl@0
   160
		dbus_connection_flush(connection); 
sl@0
   161
	}
sl@0
   162
sl@0
   163
void called_dbus_message_get_no_reply0(DBusMessage* msg,DBusConnection* connection)
sl@0
   164
	{
sl@0
   165
		dbus_bool_t nomsg = FALSE;
sl@0
   166
		char err_succes[]={"Set reply is set/reply not required"};
sl@0
   167
		char err_fail[]={"Set reply is not been set/reply may be sent"};
sl@0
   168
		
sl@0
   169
		dbus_int32_t return_value = 9090;
sl@0
   170
		FILE *fp; 
sl@0
   171
		fp = fopen("c:\\msggetnorply.txt","w"); 
sl@0
   172
		
sl@0
   173
	
sl@0
   174
	
sl@0
   175
		nomsg = dbus_message_get_no_reply(msg) ;
sl@0
   176
		if(nomsg)
sl@0
   177
			{
sl@0
   178
			fwrite(err_succes,1,sizeof(err_succes),fp); 
sl@0
   179
			fclose(fp);
sl@0
   180
			}
sl@0
   181
		else  
sl@0
   182
			{
sl@0
   183
				fwrite(err_fail,1,sizeof(err_fail),fp);  
sl@0
   184
				fclose(fp);
sl@0
   185
			}
sl@0
   186
			
sl@0
   187
	
sl@0
   188
		dbus_connection_flush(connection); 
sl@0
   189
	}
sl@0
   190
sl@0
   191
sl@0
   192
sl@0
   193
sl@0
   194
int main()
sl@0
   195
{
sl@0
   196
	DBusError error;
sl@0
   197
	DBusError error1;
sl@0
   198
	DBusConnection* connection;
sl@0
   199
	DBusMessage* msg;
sl@0
   200
	DBusObjectPathVTable vtable;
sl@0
   201
	 
sl@0
   202
	dbus_error_init(&error);
sl@0
   203
	dbus_error_init(&error1);
sl@0
   204
	fprintf(stdout, "Starting Method");
sl@0
   205
	
sl@0
   206
	connection = dbus_bus_get(DBUS_BUS_SESSION, &error);
sl@0
   207
	
sl@0
   208
	if(dbus_error_is_set(&error))
sl@0
   209
	{
sl@0
   210
		fprintf(stdout, "Error Occured :: %s", error.name);
sl@0
   211
		return 1;
sl@0
   212
	}
sl@0
   213
	
sl@0
   214
sl@0
   215
	
sl@0
   216
	if(dbus_connection_register_object_path (connection, "/Test/Method/Object", &vtable, NULL))
sl@0
   217
	{
sl@0
   218
		fprintf(stdout, "Object Path registered.");
sl@0
   219
	}
sl@0
   220
	else
sl@0
   221
	{
sl@0
   222
		fprintf(stdout, "Object Path not able to register.");
sl@0
   223
		return 1;
sl@0
   224
	}
sl@0
   225
 
sl@0
   226
sl@0
   227
sl@0
   228
	if(dbus_bus_request_name (connection, TEST_BUS_NAME_TEMP, DBUS_NAME_FLAG_ALLOW_REPLACEMENT, &error1) == -1)
sl@0
   229
	{
sl@0
   230
		fprintf(stdout, "Not able to request name.");
sl@0
   231
	}
sl@0
   232
	else
sl@0
   233
	{
sl@0
   234
		fprintf(stdout, "Name Request Successful");
sl@0
   235
	}
sl@0
   236
	
sl@0
   237
	while(TRUE)
sl@0
   238
	{	
sl@0
   239
		dbus_connection_read_write(connection, 0);
sl@0
   240
		
sl@0
   241
		msg = dbus_connection_pop_message(connection);
sl@0
   242
			
sl@0
   243
		if(msg == NULL)
sl@0
   244
		{
sl@0
   245
			sleep(1);
sl@0
   246
			continue;
sl@0
   247
		}
sl@0
   248
		     
sl@0
   249
		fprintf(stdout, "Message Detected");
sl@0
   250
		
sl@0
   251
		if(DBUS_MESSAGE_TYPE_SIGNAL == dbus_message_get_type(msg))
sl@0
   252
		{
sl@0
   253
			fprintf(stdout, "Message is Signal.");
sl@0
   254
		}
sl@0
   255
		
sl@0
   256
		if(DBUS_MESSAGE_TYPE_METHOD_CALL == dbus_message_get_type(msg))
sl@0
   257
		{
sl@0
   258
			fprintf(stdout, "Message is Method call.");
sl@0
   259
		}
sl@0
   260
		if(dbus_message_is_method_call(msg, "test.Method.Call", "file_writecontact"))
sl@0
   261
			{
sl@0
   262
			
sl@0
   263
			called_file_writecontact(msg, connection);
sl@0
   264
			break;
sl@0
   265
			}
sl@0
   266
		 
sl@0
   267
		
sl@0
   268
		 
sl@0
   269
		if(dbus_message_is_method_call(msg, "test.Method.Call", "dbus_connection_borrow_message0"))
sl@0
   270
			{
sl@0
   271
			
sl@0
   272
			called_dbus_connection_borrow_message0(msg, connection);
sl@0
   273
	
sl@0
   274
			}
sl@0
   275
		
sl@0
   276
		if(dbus_message_is_method_call(msg, "test.Method.Call", "dbus_connection_pop_message0"))
sl@0
   277
			{
sl@0
   278
			
sl@0
   279
			called_dbus_connection_pop_message0(msg, connection);
sl@0
   280
	
sl@0
   281
			}
sl@0
   282
		
sl@0
   283
		if(dbus_message_is_method_call(msg, "test.Method.Call", "dbus_connection_steal_borrowed_message0"))
sl@0
   284
			{
sl@0
   285
			
sl@0
   286
			called_dbus_connection_steal_borrowed_message0(msg, connection);
sl@0
   287
	
sl@0
   288
			}
sl@0
   289
		if(dbus_message_is_method_call(msg, "test.Method.Call", "dbus_connection_return_message0"))
sl@0
   290
			{
sl@0
   291
			
sl@0
   292
			called_dbus_connection_return_message0(msg, connection);
sl@0
   293
		
sl@0
   294
			}
sl@0
   295
		if(dbus_message_is_method_call(msg, "test.Method.Call", "dbus_message_new_error_printf0"))
sl@0
   296
			{
sl@0
   297
				called_dbus_message_new_error_printf0(msg, connection);
sl@0
   298
		
sl@0
   299
			}
sl@0
   300
		
sl@0
   301
sl@0
   302
		
sl@0
   303
		if(dbus_message_is_method_call(msg, "test.Method.Call", "dbus_message_get_no_reply0"))
sl@0
   304
			{
sl@0
   305
			
sl@0
   306
			called_dbus_message_get_no_reply0(msg, connection);
sl@0
   307
			break;
sl@0
   308
			} 
sl@0
   309
		dbus_message_unref(msg);    
sl@0
   310
	}
sl@0
   311
	
sl@0
   312
	dbus_connection_unref(connection); 
sl@0
   313
	return 0;
sl@0
   314
}