bool GeneticEventManager::decode_allele( ge_id_t eID, pos_t & pos, allele_t & all ) {
    bool bFound = false;
    int len = 0;
    switch( getFormat( eID ) ) {
    case efSUBSTITUTION4:
        ++len;
    case efSUBSTITUTION3:
        ++len;
    case efSUBSTITUTION2:
        ++len;
    case efSUBSTITUTION1:
        bFound = handleShortSubstitution( eID, ++len, pos, all );
        break;
    case efINSERT4:
        ++len;
    case efINSERT3:
        ++len;
    case efINSERT2:
        ++len;
    case efINSERT1:
        bFound = handleShortInsert( eID, ++len, pos, all );
        break;
    case efDELETION:
        bFound = handleDeletion( eID, pos, all );
        break;
    case efINDEX:
        bFound = handleIndex( eID, pos, all );
        break;
    default:
        assert(false);
        break;
    }

    return bFound;
}
Esempio n. 2
0
int main(int argc, char *argv[])
{
	printf("====================== mSquared File Transfer Program ======================\n\n");
	printf("Developed by: Mrinal Dhar 201325118 | Mounika Somisetty 201330076\n");
	printf("Enter 'help' to get help about commands and other cool stuff this program can do.\n\n");
	printf("============================================================================\n\n");

	int serv_pid = 0;
	int udpServ_pid = 0;
	int i;
	char cmd[1024];
	char *vals[49];
	WEB_PORT = strdup("8000");

	if(argc == 2)
	{
		bzero(IP,sizeof(IP));
		strcpy(IP,argv[1]);
	}
	else {
		strcpy(IP, "127.0.0.1");
	}


	serv_pid = fork();
	if (serv_pid == 0) {
		listenSocket = socket(AF_INET,SOCK_STREAM,0);
	if(listenSocket<0)
	{
		// printf("ERROR WHILE CREATING A SOCKET\n");
	}
	else {}
		// printf("[SERVER] SOCKET ESTABLISHED SUCCESSFULLY\n\n");

		initServer();
        close(listenSocket);

	}

        	serv_pid = fork();
	if (serv_pid == 0) {

struct mg_server *server;

  // Create and configure the server
  server = mg_create_server(NULL, ev_handler);
  mg_set_option(server, "listening_port", WEB_PORT);

  // Serve request. 
  // printf("Web Server Starting on port %s\n", mg_get_option(server, "listening_port"));
  for (;;) {
    mg_poll_server(server, 1000);
  }

  // Cleanup, and free server instance
  mg_destroy_server(&server);



	}
	

	periodicCheck();


	char filename[50];
	char chat_msg[50];

	
	char * returncode;
	while (1) {
		printf("$> ");
        scanf("%[^\n]s", cmd);
        // printf("THIS: %s\n", cmd);
        getchar();
        if (cmd[0]=='-') {
        	bzero(chat_msg, 50);
			cpy(filename+1, cmd+1);
			filename[0] = 'c';
			// printf("THIS=%s", filename);
			sendMsg(filename, 0);
        }
        else {
        parse(cmd, vals);
        if(!strcmp(vals[0], "FileDownload")) {
			if (!strcmp(vals[1], "TCP")) {
			bzero(filename, 50);
			cpy(filename+2, vals[2]);
			filename[0] = 'd';
			filename[1] = 't';
			if(!initCDTCP(filename))
                break;
			
			}
			else if (!strcmp(vals[1], "UDP")) {
				bzero(filename, 50);
				cpy(filename+2, vals[2]);
				filename[0] = 'd';
				filename[1] = 'u';
				// sleep(5);
				if (!initUDPClient(filename+2, IP))
					break;

				sendMsg(filename, 0);
				bzero(filename, 50);

			}
			
        }
        else if (!strcmp(vals[0], "FileUpload")) {
			if (!strcmp(vals[1], "TCP")) {
				// printf("DOING!!\n\n");
				bzero(filename, 50);
				cpy(filename+2, vals[2]);
				filename[0] = 'u';
				filename[1] = 't';
				sendMsg(filename, 0);
				bzero(filename, 50);

			}
			else if (!strcmp(vals[1], "UDP")) {
				bzero(filename, 50);
				cpy(filename+2, vals[2]);
				filename[0] = 'u';
				filename[1] = 'u';
				returncode = sendMsg(filename, 1);
				// printf("GOT RCODE %s\n\n", returncode);
				if (returncode[0]=='y')
				{	
					printf("Permission granted!\n");
					sleep(2);
					initUDPServer(filename+2, IP);
				}
				bzero(filename, 50);

			}
        }
        else if(!strcmp(vals[0], "exit")) {
            close(listenSocket);
            system("killall -s 9 server");
            exit(0);
        }
        else if(!strcmp(vals[0], "FileHash")) {
        	if (!strcmp(vals[1], "--verify")) {
        		strcpy(filename, "hv");
        		strcat(filename, vals[2]);
        		sendMsg(filename, 0);
        	}
        	else if (!strcmp(vals[1], "--checkall")) {
        		strcpy(filename, "hc");
        		sendMsg(filename, 0);
        	}
        	bzero(filename, 50);
			filename[0] = 'd';
			filename[1] = 't';
			strcpy(filename+2, "fileHashOutput.txt");
			initCDTCP(filename);
        }
        else if(!strcmp(vals[0], "gui")) {

	// 			THE FOLLOWING CODE TRIES TO AUTOMATICALLY OPEN FIREFOX WHEN GUI IS ACTIVATED. This has some bugs. 
	// char * ffox[1];
	
	// ffox[0] = strdup("firefox ");
	// strcat(ffox[0], IP);
	// strcat(ffox[0], ":");
	// strcat(ffox[0], WEB_PORT);
	// serv_pid = fork();
	// if (serv_pid==0) {
	// if (execvp(ffox[0], ffox) < 0) {      
 //               printf("*** ERROR: exec failed\n");
 //               exit(1);
 //          }
 //      }
        }
        else if (!strcmp(vals[0], "help")) {
			FILE *fp = fopen("readme.txt", "rb");
			while (fread(buffer, sizeof(char), 1024, fp))
			{
				printf("%s", buffer);
				bzero(buffer,1024);
			}	
        }
        else if(!strcmp(vals[0], "IndexGet")) {  		/* I need indexget to work on both the remote machine and the local machine
        													and give output in four files: index-they.txt index-me.txt index-they-gui.txt index-me-gui.txt */
        	// handleIndex(1,0);
        	if (!strcmp(vals[1], "--shortlist")) {
        		strcpy(filename, "is");
        		sendMsg(filename, 0);
        		handleIndex(0,0,"\0", 0, 0);
        	}
        	else if (!strcmp(vals[1], "--longlist")) {
        		strcpy(filename, "il");
        		sendMsg(filename, 0);
        		handleIndex(1,0,"\0", 0, 0);
        	}
        	else if (!strcmp(vals[1], "--regex")) {
        		strcpy(filename, "ir");
        		strcat(filename, vals[2]);
        		sendMsg(filename, 0);
        		// handleIndex(1,1,vals[2], 0, 0);
        	}
        	bzero(filename, 50);
			filename[0] = 'd';
			filename[1] = 't';
			strcpy(filename+2, "index.txt");
			initCDTCP(filename);


        }
        continue;
	}
}
	printf("\nClosing connection2\n");
	
	return 0;
}
int main(int argc, char *argv[])
{
	
	int serv_pid = 0;
	int udpServ_pid = 0;
	int i;
	char cmd[1024];
	char *vals[49];
	serv_pid = fork();
	if (serv_pid == 0) {
		listenSocket = socket(AF_INET,SOCK_STREAM,0);
	if(listenSocket<0)
	{
		printf("ERROR WHILE CREATING A SOCKET\n");
	}
	else
		printf("[SERVER] SOCKET ESTABLISHED SUCCESSFULLY\n\n");

		initServer();
        close(listenSocket);

	}
	char filename[50];
	char * returncode;
	while (1) {
		printf("$> ");
        scanf("%[^\n]s", cmd);
        getchar();
        parse(cmd, vals);
        if(!strcmp(vals[0], "FileDownload")) {
			if (!strcmp(vals[1], "TCP")) {
			bzero(filename, 50);
			cpy(filename+2, vals[2]);
			filename[0] = 'd';
			filename[1] = 't';
			if(!initCDTCP(filename))
                break;
			
			}
			else if (!strcmp(vals[1], "UDP")) {
				bzero(filename, 50);
				cpy(filename+2, vals[2]);
				filename[0] = 'd';
				filename[1] = 'u';
				sendMsg(filename);
				if (!initUDPClient(filename+2))
					break;
				bzero(filename, 50);
				
			}
			
        }
        else if (!strcmp(vals[0], "FileUpload")) {
			if (!strcmp(vals[1], "TCP")) {
				printf("DOING!!\n\n");
				bzero(filename, 50);
				cpy(filename+2, vals[2]);
				filename[0] = 'u';
				filename[1] = 't';
				sendMsg(filename);
				bzero(filename, 50);

			}
			else if (!strcmp(vals[1], "UDP")) {
				bzero(filename, 50);
				cpy(filename+2, vals[2]);
				filename[0] = 'u';
				filename[1] = 'u';
				sendMsg(filename);
				initUDPServer(filename+2);
				bzero(filename, 50);

			}
        }
        else if(!strcmp(vals[0], "exit")) {
            close(listenSocket);
            exit(0);
        }
        else if(!strcmp(vals[0], "IndexGet")) {
        	// handleIndex(1,0);
        	if (!strcmp(vals[1], "--shortlist")) {
        		handleIndex(0,0,"\0");
        	}
        	else if (!strcmp(vals[1], "--longlist")) {
        		handleIndex(1,0,"\0");
        	}
        	else if (!strcmp(vals[1], "--regex")) {
        		handleIndex(1,1,vals[2]);
        	}
        }
        continue;
	}
	printf("\nClosing connection2\n");
	
	return 0;
}