/****************************************************************************************** * This utility reads by simulating an online situation reading input incoming * * source files which contains terminals and ip addresses information. * * It reads the file and based on the term type, Route the packet to the server specified.* * The main purpose of this utility is to provide and Algorithm for the processing * * of the incoming packet without any conflict. * ******************************************************************************************/ #include #include #define I_MAX_L 256 #define MULTIMEDIA_SERVER 128.198.162.217 #define HTML_JAVA_SERVER 128.198.162.228 #define DATABASE_SERVER 128.198.162.62 #define DOCOMENT_SERVER 128.198.162.64 #define COMPRESS_FILE_SERVER 128.198.162.66 FILE * incoming_source_file; FILE * outgoing_dest_file; FILE * conflict_dest_file; char *destination1; char *destination2; char *retVal; char incoming_source[I_MAX_L]; char source[I_MAX_L]; char content_switch_rule1(char *passed_source); char content_switch_rule2(char *passed_source); int main(int argc, char * argv[]) { char *instructions; char *tmp_ptr; char returned_destination1[I_MAX_L]; char returned_destination2[I_MAX_L]; instructions = "\n\tUsage: \n"; if (argc < 1) { printf("%s", "\n\tThis program reads the source requested from input file\n"); printf("%s", instructions); printf("\n\tIncomplete parameter list. . . Exiting program.\n\n"); exit(1); } if (( incoming_source_file = fopen(argv[1], "r")) == NULL) { printf("%s", instructions); perror("\n\tInput file to read TERM not found!. . . Exiting program.\n"); exit(1); } if ((outgoing_dest_file = fopen("outgoing_dest_file.txt", "w")) == NULL) { perror("\n\tUnable to open keep output file!. . . Exiting program.\n"); exit(1); } if ((conflict_dest_file = fopen("conflict_in_dest_file.txt", "w")) == NULL) { perror("\n\tUnable to open reject output file!. . . Exiting program.\n"); exit(1); } destination1= (char *) malloc(256 * sizeof(char)); if (!destination1) printf("Failed to allocate memory\n"); destination2= (char *) malloc(256 * sizeof(char)); if (!destination2) printf("Failed to allocate memory\n"); /* Checking, If incoming source file does not have any source in it, then no need to go in while loop */ retVal=fgets(incoming_source, I_MAX_L, incoming_source_file); if (retVal == NULL) { printf("Empty file\n"); return; } printf("\nIncoming source is: :%s: \nlength is : %d\n", incoming_source, strlen(incoming_source)); while (!feof(incoming_source_file)) { content_switch_rule1(incoming_source); sprintf(returned_destination1,"%s",destination1); content_switch_rule2(incoming_source); sprintf(returned_destination2,"%s",destination2); if ( strcmp(returned_destination1, returned_destination2) == 0 ) fprintf(outgoing_dest_file,"Send %s to %s\n", incoming_source, destination1); else fprintf(conflict_dest_file,"Conflict occured in sending source %s for %s and %s\n", incoming_source,returned_destination1, returned_destination2); fgets(incoming_source, I_MAX_L, incoming_source_file); printf("\nIncoming source is: :%s: \nlength is : %d\n", incoming_source, strlen(incoming_source)); } } /********************************************************************** * Function Name: content_switch_rule1 * * Description: Read the record thru the function and a switch case is* * added to virtually create a situation where a conflict will occur * **********************************************************************/ char content_switch_rule1(char *passed_source) { char temp_source1[I_MAX_L]; char temp_destination1[I_MAX_L]; int i; for (i=0; i < (int)strlen(passed_source); i++) temp_source1[i]=tolower(passed_source[i]); temp_source1[--i]='\0'; printf("\nIn function source is: :%s: \nlength is: %d\n", temp_source1, strlen(temp_source1)); switch (temp_source1[0]) { case 'a': sprintf(temp_destination1, "%s", "MULTIMEDIA_SERVER"); break; case 'b': sprintf(temp_destination1, "%s", "MULTIMEDIA_SERVER"); break; case 'c': sprintf(temp_destination1, "%s", "DATABASE_SERVER"); break; case 'd': sprintf(temp_destination1, "%s", "DATABASE_SERVER"); break; case 'e': sprintf(temp_destination1, "%s", "MULTIMEDIA_SERVER"); break; case 'f': sprintf(temp_destination1, "%s", "MULTIMEDIA_SERVER"); break; case 'g': sprintf(temp_destination1, "%s", "COMPRESS_FILE_SERVER"); break; case 'h': sprintf(temp_destination1, "%s", "MULTIMEDIA_SERVER"); break; case 'i': sprintf(temp_destination1, "%s", "MULTIMEDIA_SERVER"); break; case 'j': sprintf(temp_destination1, "%s", "MULTIMEDIA_SERVER"); break; case 'k': sprintf(temp_destination1, "%s", "MULTIMEDIA_SERVER"); break; case 'l': sprintf(temp_destination1, "%s", "DATABASE_SERVER"); break; case 'm': sprintf(temp_destination1, "%s", "MULTIMEDIA_SERVER"); break; case 'n': sprintf(temp_destination1, "%s", "MULTIMEDIA_SERVER"); break; case 'o': sprintf(temp_destination1, "%s", "MULTIMEDIA_SERVER"); break; case 'p': sprintf(temp_destination1, "%s", "MULTIMEDIA_SERVER"); break; case 'q': sprintf(temp_destination1, "%s", "MULTIMEDIA_SERVER"); break; case 'r': sprintf(temp_destination1, "%s", "MULTIMEDIA_SERVER"); break; case 's': sprintf(temp_destination1, "%s", "DOCOMENT_SERVER"); break; case 't': sprintf(temp_destination1, "%s", "COMPRESS_FILE_SERVER"); break; case 'u': sprintf(temp_destination1, "%s", "HTML_JAVA_SERVER"); break; case 'v': sprintf(temp_destination1, "%s", "MULTIMEDIA_SERVER"); break; case 'w': sprintf(temp_destination1, "%s", "MULTIMEDIA_SERVER"); break; case 'x': sprintf(temp_destination1, "%s", "MULTIMEDIA_SERVER"); break; case 'y': sprintf(temp_destination1, "%s", "MULTIMEDIA_SERVER"); break; case 'z': sprintf(temp_destination1, "%s", "HTML_JAVA_SERVER"); break; default: printf("\nIn function before sending ...:%s:\n",temp_destination1); } strcpy(destination1,temp_destination1); } /********************************************************************** * Function Name: content_switch_rule2 * * Description: Read the record thru the function and a switch case is* * added to virtually create a situation where a conflict will occur * **********************************************************************/ char content_switch_rule2(char *passed_source) { char temp_source2[I_MAX_L]; char temp_destination2[I_MAX_L]; int i; for (i=0; i < (int)strlen(passed_source); i++) temp_source2[i]=tolower(passed_source[i]); temp_source2[--i]='\0'; printf("\nIn function source is: :%s: \n'l':ength is: %d\n", temp_source2, strlen(temp_source2)); switch (temp_source2[0]) { case 'a': sprintf(temp_destination2, "%s", "MULTIMEDIA_SERVER"); break; case 'b': sprintf(temp_destination2, "%s", "MULTIMEDIA_SERVER"); break; case 'c': sprintf(temp_destination2, "%s", "MULTIMEDIA_SERVER"); break; case 'd': sprintf(temp_destination2, "%s", "MULTIMEDIA_SERVER"); break; case 'e': sprintf(temp_destination2, "%s", "MULTIMEDIA_SERVER"); break; case 'f': sprintf(temp_destination2, "%s", "MULTIMEDIA_SERVER"); break; case 'g': sprintf(temp_destination2, "%s", "MULTIMEDIA_SERVER"); break; case 'h': sprintf(temp_destination2, "%s", "MULTIMEDIA_SERVER"); break; case 'i': sprintf(temp_destination2, "%s", "DOCUMENT_SERVER"); break; case 'j': sprintf(temp_destination2, "%s", "MULTIMEDIA_SERVER"); break; case 'k': sprintf(temp_destination2, "%s", "MULTIMEDIA_SERVER"); break; case 'l': sprintf(temp_destination2, "%s", "ARCHIVE_SERVER"); break; case 'm': sprintf(temp_destination2, "%s", "MULTIMEDIA_SERVER"); break; case 'n': sprintf(temp_destination2, "%s", "MULTIMEDIA_SERVER"); break; case 'o': sprintf(temp_destination2, "%s", "MULTIMEDIA_SERVER"); break; case 'p': sprintf(temp_destination2, "%s", "MULTIMEDIA_SERVER"); break; case 'q': sprintf(temp_destination2, "%s", "COMPRESS_FILE_SERVER"); break; case 'r': sprintf(temp_destination2, "%s", "DATABASE_SERVER"); break; case 's': sprintf(temp_destination2, "%s", "DOCOMENT_SERVER"); break; case 't': sprintf(temp_destination2, "%s", "COMPRESS_FILE_SERVER"); break; case 'u': sprintf(temp_destination2, "%s", "HTML_JAVA_SERVER"); break; case 'v': sprintf(temp_destination2, "%s", "MULTIMEDIA_SERVER"); break; case 'w': sprintf(temp_destination2, "%s", "MULTIMEDIA_SERVER"); break; case 'x': sprintf(temp_destination2, "%s", "MULTIMEDIA_SERVER"); break; case 'y': sprintf(temp_destination2, "%s", "MULTIMEDIA_SERVER"); break; case 'z': sprintf(temp_destination2, "%s", "MULTIMEDIA_SERVER"); break; default: printf("\nIn function before sending ...:%s:\n",temp_destination2); } strcpy(destination2,temp_destination2); }