Esempio n. 1
0
void send_request(int socket, struct sockaddr_in* addr, int start, int length, struct Queue* q){
    char request[25]; // wyślij żądanie do serwera
    create_request_string(start, length, request);
    pp_sendto(socket, request, strlen(request), 0, addr, sizeof(struct sockaddr_in));
    
    struct UDPRequest r; // zapisz informację o tym żądaniu w kolejce
    r.start = start;
    r.length = length;
    gettimeofday(&r.time, NULL);
    push(r, q);
}
Esempio n. 2
0
int main_searchvariants(int argc, char* argv[],char *server_url)
{
	int cmd;
	int i;
	search_variant_request *request=(search_variant_request*)malloc(1*sizeof(search_variant_request));	
	int size_variants = 0;
	int size_calls = 0;
	request->name = "null";
	request->pageToken ="null";
	char debug = 0;
	
	static struct option long_options[]={
		{"variantSetIds",required_argument,0,'v'},
		{"referenceName",required_argument,0,'r'},
		{"start",required_argument,0,'s'},
		{"end",required_argument,0,'e'},
		{"callSetIds",required_argument,0,'c'},
		{"variantName",required_argument,0,'n'},
		{"debug",no_argument,0,'d'},
		{0,0,0,0}
	};
	//if(argc < 2)
	while((cmd=getopt_long(argc,argv,"v:r:s:e:c:n:d",long_options,NULL))!=-1)
	{
		switch(cmd)
		{
			case 'v':
					if(optarg==NULL||(strcmp(optarg,"")==0))
						{
							error("--variantSetIds string can't be empty.\n");	
						}
					  else
						{
							size_variants = count_ids(optarg);
						 	request->variantSetIds = (char**)malloc(size_variants*sizeof(char*));
							set_ids(optarg,request->variantSetIds,size_variants);
						}
						break;
			case 'r':
					if(optarg==NULL||(strcmp(optarg,"")==0))
						{
							error("--referenceName string can't be empty.\n");				
						}
					  else
						{
							request->referenceName = optarg; 
						  	
						}
						break;
			case 's': request->start = atol(optarg);
					if(request->start < 0)
					{
					  	error("--start integer must be no negative.");
					}
					break;
			case 'e': request->end = atol(optarg); 
					if(request->end < 0)
					{
						perror("--end integer must be no negative.");
					}
					break;
			case 'c': if(optarg==NULL||(strcmp(optarg,"")==0))
						{
							size_calls = 0;
						}
					  else
					  	{
					  		size_calls = count_ids(optarg);
						  	request->callSetIds = (char**)malloc(size_calls*sizeof(char*));
						  	set_ids(optarg,request->callSetIds,size_calls);
					  	}
					break;
			case 'n': request->name = optarg; break;
			case 'd': debug = 1; break;
			case '?': usage();
			default: error("Unknown argument %s\n",optarg);
		}
	}
	
	if(size_variants==0)
	{
		usage();
	}
	
	start_user(server_url);
	char* vcf_file_name;
	//process each variantSet
	for(i=0; i<size_variants; i++)
	{
		
		vcf_file_name = get_variantSetId_vcf_name(request,i);
		create_vcf_file(vcf_file_name);	
		
		while(strcmp(request->pageToken,"NULL")!=0)
		{
			user->post_fields = create_request_string(request,i,size_calls);
			//printf("post field string: %s \n",user->post_fields);
			client_search_request(user,"variants");
			//printf("%s\n",user->response);
			write_vcf_file(user->response,vcf_file_name);
			request->pageToken = get_pageToken();
			//printf("%s \n",request->pageToken);
			if(debug)
			{
				printf("%s\n",user->response);
			}
		}
	}
	end_user();
	return 0;
}