You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by sa...@apache.org on 2007/05/16 05:09:11 UTC

svn commit: r538415 - /webservices/axis2/trunk/c/tools/tcpmon/src/tcpmon.c

Author: samisa
Date: Tue May 15 20:09:10 2007
New Revision: 538415

URL: http://svn.apache.org/viewvc?view=rev&rev=538415
Log:
Applied patch by Mark and also some more improvments to help and command line options

Modified:
    webservices/axis2/trunk/c/tools/tcpmon/src/tcpmon.c

Modified: webservices/axis2/trunk/c/tools/tcpmon/src/tcpmon.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/tools/tcpmon/src/tcpmon.c?view=diff&rev=538415&r1=538414&r2=538415
==============================================================================
--- webservices/axis2/trunk/c/tools/tcpmon/src/tcpmon.c (original)
+++ webservices/axis2/trunk/c/tools/tcpmon/src/tcpmon.c Tue May 15 20:09:10 2007
@@ -26,13 +26,20 @@
 #include <axutil_string.h>
 
 #define SIZE 1024
+axis2_char_t *tcpmon_traffic_log = "tcpmon_traffic.log";
 
 int on_new_entry(const axutil_env_t *env,
 					  tcpmon_entry_t* entry,
 					  int status);
+int on_new_entry_to_file(const axutil_env_t *env,
+					  tcpmon_entry_t* entry,
+					  int status);
 int on_error_func(const axutil_env_t *env,
 						char* error_message);
 
+char *str_replace(char *str, const char *search, const char *replace);
+
+
 int main(int argc, char** argv)
 {
 		axutil_env_t* env = NULL;
@@ -60,8 +67,13 @@
         
 		if (!axutil_strcmp(argv[1], "-h"))
 		{
-				printf("Usage : %s [OPTIONS] -lp LISTEN_PORT -tp TARGET_PORT -th [TARGET_HOST]\n", argv[0]);
-				printf("use -h for help\n");
+				printf("Usage : %s [-lp LISTEN_PORT] [-tp TARGET_PORT] [-th TARGET_HOST] [-f LOG_FILE]\n", argv[0]);
+                fprintf(stdout, " Options :\n");
+                fprintf(stdout, "\t-lp LISTEN_PORT \t port number to listen on, default is 9090\n");
+                fprintf(stdout, "\t-tp TARGET_PORT \t port number to connect and re-direct messages, default is 8080\n");
+                fprintf(stdout, "\t-th TARGET_HOST \t target host to connect, default is localhost\n");
+                fprintf(stdout, "\t-f  LOG_FILE    \t file to write the messages to, default is %s\n", tcpmon_traffic_log);
+                fprintf(stdout, " Help :\n\t-h \t display this help screen.\n\n");
 				return 0;
 		}
 
@@ -74,7 +86,7 @@
 						if (listen_port == 0)
 						{
 								printf("INVALID value for listen port\n");
-								printf("use -h for help\n");
+								printf("Use -h for help\n");
 								return 0;
 						}
 
@@ -86,7 +98,7 @@
 						if (target_port == 0)
 						{
 								printf("INVALID value for target port\n");
-								printf("use -h for help\n");
+								printf("Use -h for help\n");
 								return 0;
 						}
 				}
@@ -105,12 +117,17 @@
                     ii++;
                     format_bit = 1;
                 }
+                else if (!strcmp ("-f", argv[ii]))
+				{
+						ii++;
+						tcpmon_traffic_log = argv[ii++];
+				}
 				else
-				  {
+				{
 						printf("INVALID value for tcpmon \n");
-						printf("use -h for help\n");
+						printf("Use -h for help\n");
 						return 0;
-				  }
+				}
 		}
 
 		if (!(listen_port && target_port && target_host))
@@ -128,7 +145,9 @@
 		TCPMON_SESSION_SET_TARGET_PORT(session, env, target_port);
 		TCPMON_SESSION_SET_TARGET_HOST(session, env, target_host);
 		TCPMON_SESSION_ON_TRANS_FAULT(session, env, on_error_func);
-		TCPMON_SESSION_ON_NEW_ENTRY(session, env, on_new_entry);
+
+		TCPMON_SESSION_ON_NEW_ENTRY(session, env, on_new_entry_to_file);
+
 		TCPMON_SESSION_SET_TEST_BIT (session, env, test_bit);
 		TCPMON_SESSION_SET_FORMAT_BIT(session, env, format_bit);
 		TCPMON_SESSION_START(session, env);
@@ -147,6 +166,105 @@
 		return 0;
 }
 
+
+int on_new_entry_to_file(const axutil_env_t *env,
+					  tcpmon_entry_t* entry,
+					  int status)
+{
+		char* plain_buffer = NULL;
+		char* formated_buffer = NULL;
+        int format = 0;
+		FILE *file;
+		char *convert = NULL;
+
+		file = fopen(tcpmon_traffic_log, "a+");
+
+		if(NULL == file) {
+			printf("\ncould not create or open log-file\n");
+			return -1;
+		}
+
+		fprintf(file, "\n= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =\n");
+
+        format = TCPMON_ENTRY_GET_FORMAT_BIT(entry, env);
+
+		if (status == 0)
+		{
+				plain_buffer = TCPMON_ENTRY_SENT_DATA(entry, env);
+				if (plain_buffer) /* this can be possible as no xml present */
+				{
+						formated_buffer = tcpmon_util_format_as_xml
+								(env, plain_buffer, format);
+				}
+				else
+				{
+						formated_buffer = "";
+				}
+				/* 2 screen */
+				printf("%s\n", "SENDING DATA..");
+				printf("/* sending time = %s*/\n", TCPMON_ENTRY_SENT_TIME(entry, env));
+				printf("---------------------\n");
+
+				printf("%s\n\n%s\n\n", TCPMON_ENTRY_SENT_HEADERS(entry, env), formated_buffer);
+
+				/* 2 file */
+				fprintf(file, "%s\n", "SENDING DATA..");
+				fprintf(file, "/* sending time = %s*/\n", TCPMON_ENTRY_SENT_TIME(entry, env));
+				fprintf(file, "---------------------\n");
+
+				convert = TCPMON_ENTRY_SENT_HEADERS(entry, env);
+				convert = str_replace(convert, "; ", ";\n\t");
+				fprintf(file, "%s", convert);
+
+				convert = formated_buffer;
+				convert = str_replace(convert, "; ", ";\n\t");
+				convert = str_replace(convert, "><", ">\n<");
+				fprintf(file, "%s", convert);
+
+				
+		}
+		if (status == 1)
+		{
+				plain_buffer = TCPMON_ENTRY_ARRIVED_DATA(entry, env);
+				if (plain_buffer) /* this can be possible as no xml present */
+				{
+						formated_buffer = tcpmon_util_format_as_xml
+								(env, plain_buffer, format);
+				}
+				else
+				{
+						formated_buffer = "";
+				}
+				/* 2 screen */
+				printf("%s\n", "RETRIEVING DATA..");
+				printf("/* retrieving time = %s*/\n", TCPMON_ENTRY_ARRIVED_TIME(entry, env));
+				printf("/* time throughput = %s*/\n", TCPMON_ENTRY_TIME_DIFF(entry, env));
+				printf("---------------------\n");
+
+				printf("%s\n\n%s\n\n", TCPMON_ENTRY_ARRIVED_HEADERS(entry, env), formated_buffer);
+
+				/* 2 file */
+				fprintf(file, "%s\n", "RETRIEVING DATA..");
+				fprintf(file, "/* retrieving time = %s*/\n", TCPMON_ENTRY_ARRIVED_TIME(entry, env));
+				fprintf(file, "/* time throughput = %s*/\n", TCPMON_ENTRY_TIME_DIFF(entry, env));
+				fprintf(file, "---------------------\n");
+
+				convert = TCPMON_ENTRY_ARRIVED_HEADERS(entry, env);
+				convert = str_replace(convert, "; ", ";\n\t");
+				fprintf(file, "%s", convert);
+
+				convert = formated_buffer;
+				convert = str_replace(convert, "; ", ";\n\t");
+				convert = str_replace(convert, "><", ">\n<");
+				fprintf(file, "%s", convert);
+		}
+
+		fclose(file);
+
+		return 0;
+}
+
+
 int on_new_entry(const axutil_env_t *env,
 					  tcpmon_entry_t* entry,
 					  int status)
@@ -173,8 +291,7 @@
 				printf("/* sending time = %s*/\n", TCPMON_ENTRY_SENT_TIME(entry, env));
 				printf("---------------------\n");
 
-				printf("%s\n\n%s\n\n", TCPMON_ENTRY_SENT_HEADERS(entry, env),
-						 formated_buffer);
+				printf("%s\n\n%s\n\n", TCPMON_ENTRY_SENT_HEADERS(entry, env), formated_buffer);
 		}
 		if (status == 1)
 		{
@@ -199,6 +316,8 @@
 		return 0;
 }
 
+
+
 int on_error_func(const axutil_env_t *env,
 						char* error_message)
 {
@@ -207,6 +326,47 @@
 }
 
 
+
+
+char *str_replace(char *str, const char *search, const char *replace) {
+	int size = strlen(str) * 2;
+	int addmem = size;
+	int diff = strlen(replace)-strlen(search);
+
+	char *str_return = (char *) malloc(size *sizeof(char));
+	char *str_tmp = (char *) malloc(size * sizeof(char));
+	char *str_relic;	
+
+	if(str_return == NULL || str_tmp == NULL) {
+		free(str_return);
+		free(str_tmp);
+		return "function str_replace : gimme more memory";
+	}
+
+	strcpy(str_return, str);
+
+	while( (str_relic = strstr(str_return, search)) != NULL) {
+		if( strlen(str_return) + diff >= addmem) {
+			str_return = (char *) realloc(str_return, addmem+=size);
+			str_tmp = (char *) realloc(str_tmp, addmem);
+
+			if(str_return == NULL || str_tmp == NULL) {
+				free(str_return);
+				free(str_tmp);
+				return "function str_replace : gimme more memory";
+			}
+		}
+
+		strcpy(str_tmp, replace);
+		strcat(str_tmp, (str_relic+strlen(search)) );
+		*str_relic = '\0';
+
+		strcat(str_return, str_tmp);
+	}
+
+	free(str_tmp);
+	return(str_return);
+}
 
 
 



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org