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); }
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; }