Exemple #1
0
void gen_x(int num)
{
	copy_request("get_mul", 1) ;
	sleep(1) ;
	int mul_tid = get_tid("get_mul_copy", 1) ;
	int mynum = copynum(myname, mytid) ;
	int mul_inpnum ;
	if(mynum == 1)
		mul_inpnum = 0;
	else if(mynum == 2)
		mul_inpnum = 1 ;
	else
	{
		printf("[%s][gen_x]:my copy num=%d, but conditions are only for 1 and 2\n",myname, mynum) ;
		pvm_exit() ;
		exit(0) ;
	}
	for(int i = 0 ; i < num; ++i)
	{
		pvm_initsend(PvmDataDefault) ;
		pvm_pkint(&mul_inpnum, 1, 1) ;
		int num = i + 1 ;
		pvm_pkint(&num, 1 ,1) ;
		pvm_send(mul_tid, i) ;
	}
return ;
}
Exemple #2
0
static int update_child_status_internal(int child_num,
                                        int thread_num,
                                        int status,
                                        conn_rec *c,
                                        request_rec *r)
{
    int old_status;
    worker_score *ws;
    process_score *ps;
    int mpm_generation;

    ws = &ap_scoreboard_image->servers[child_num][thread_num];
    old_status = ws->status;
    ws->status = status;

    ps = &ap_scoreboard_image->parent[child_num];

    if (status == SERVER_READY
        && old_status == SERVER_STARTING) {
        ws->thread_num = child_num * thread_limit + thread_num;
        ap_mpm_query(AP_MPMQ_GENERATION, &mpm_generation);
        ps->generation = mpm_generation;
    }

    if (ap_extended_status) {
        ws->last_used = apr_time_now();
        if (status == SERVER_READY || status == SERVER_DEAD) {
            /*
             * Reset individual counters
             */
            if (status == SERVER_DEAD) {
                ws->my_access_count = 0L;
                ws->my_bytes_served = 0L;
            }
            ws->conn_count = 0;
            ws->conn_bytes = 0;
        }
        if (r) {
            apr_cpystrn(ws->client, ap_get_remote_host(c, r->per_dir_config,
                        REMOTE_NOLOOKUP, NULL), sizeof(ws->client));
            copy_request(ws->request, sizeof(ws->request), r);
            if (r->server) {
                apr_snprintf(ws->vhost, sizeof(ws->vhost), "%s:%d",
                             r->server->server_hostname,
                             r->connection->local_addr->port);
            }
        }
        else if (c) {
            apr_cpystrn(ws->client, ap_get_remote_host(c, NULL,
                        REMOTE_NOLOOKUP, NULL), sizeof(ws->client));
            ws->request[0]='\0';
            ws->vhost[0]='\0';
        }
    }

    return old_status;
}
Exemple #3
0
int main(){
  printf("Ładowanie klienta...\n");
  signal(SIGINT, sigint_handler);
  smd = shm_open("/shm", O_RDWR, 0600);
  if(smd < 0){
    perror("SHM OPEN ERROR!");
    exit(-1);
  }
  s_area = (unsigned int*) mmap(0, sizeof(message),
      PROT_WRITE | PROT_READ, MAP_SHARED, smd, 0 );
  if(s_area == (void*)-1){
    perror("mmap error!");
    exit(-1);
  }
  sem_t* sem_request = sem_open("/sem-request", O_RDWR);
  if(sem_request == SEM_FAILED){
    perror("Request semafor error!");
    exit(-1);
  }
  sem_t* sem_respond = sem_open("/sem-respond", O_RDWR);
  if(sem_respond == SEM_FAILED){
    perror("Respond semafor error!");
    exit(-1);
  }
  sem_clients = sem_open("/sem-clients", O_RDWR);
  if(sem_clients == SEM_FAILED){
    perror("Clients semafor error!");
    exit(-1);
  }
  //end of initialization
  msg = (void*) s_area;
  csem = 0;
  my_usr_id = -1;
  printf("Welcome in Hospital client!\n");
  int auth = 0;
// main loop
  while(1){
    int make = make_request(&auth);
    sem_wait(sem_clients);
    csem = 1;
    if(make == 0 ){
      copy_request();
	printf("%s\n",msg->message);
      sem_post(sem_request);
      sem_wait(sem_respond);
      process_respond(&auth);
      while(msg->is_complete < 0){
        sem_wait(sem_respond);
        process_respond(&auth);
      }
  }
    sem_post(sem_clients);
    csem = 0;
  }
  return 0;
}
Exemple #4
0
AP_DECLARE(int) ap_update_child_status_from_indexes(int child_num,
                                                    int thread_num,
                                                    int status,
                                                    request_rec *r)
{
    int old_status;
    worker_score *ws;
    process_score *ps;

    if (child_num < 0) {
        return -1;
    }

    ws = &ap_scoreboard_image->servers[child_num][thread_num];
    old_status = ws->status;
    ws->status = status;

    ps = &ap_scoreboard_image->parent[child_num];

    if (status == SERVER_READY
        && old_status == SERVER_STARTING) {
        ws->thread_num = child_num * thread_limit + thread_num;
        ps->generation = ap_my_generation;
    }

    if (ap_extended_status) {
        ws->last_used = apr_time_now();
        if (status == SERVER_READY || status == SERVER_DEAD) {
            /*
             * Reset individual counters
             */
            if (status == SERVER_DEAD) {
                ws->my_access_count = 0L;
                ws->my_bytes_served = 0L;
            }
            ws->conn_count = 0;
            ws->conn_bytes = 0;
        }
        if (r) {
            conn_rec *c = r->connection;
            apr_cpystrn(ws->client, ap_get_remote_host(c, r->per_dir_config,
                        REMOTE_NOLOOKUP, NULL), sizeof(ws->client));
            copy_request(ws->request, sizeof(ws->request), r);
            apr_cpystrn(ws->vhost, r->server->server_hostname,
                        sizeof(ws->vhost));
        }
    }

    return old_status;
}
Exemple #5
0
static void run_service(const char **argv, int buffer_input)
{
	const char *encoding = getenv("HTTP_CONTENT_ENCODING");
	const char *user = getenv("REMOTE_USER");
	const char *host = getenv("REMOTE_ADDR");
	int gzipped_request = 0;
	struct child_process cld = CHILD_PROCESS_INIT;
	ssize_t req_len = get_content_length();

	if (encoding && !strcmp(encoding, "gzip"))
		gzipped_request = 1;
	else if (encoding && !strcmp(encoding, "x-gzip"))
		gzipped_request = 1;

	if (!user || !*user)
		user = "******";
	if (!host || !*host)
		host = "(none)";

	if (!getenv("GIT_COMMITTER_NAME"))
		argv_array_pushf(&cld.env_array, "GIT_COMMITTER_NAME=%s", user);
	if (!getenv("GIT_COMMITTER_EMAIL"))
		argv_array_pushf(&cld.env_array,
				 "GIT_COMMITTER_EMAIL=%s@http.%s", user, host);

	cld.argv = argv;
	if (buffer_input || gzipped_request || req_len >= 0)
		cld.in = -1;
	cld.git_cmd = 1;
	cld.clean_on_exit = 1;
	cld.wait_after_clean = 1;
	if (start_command(&cld))
		exit(1);

	close(1);
	if (gzipped_request)
		inflate_request(argv[0], cld.in, buffer_input, req_len);
	else if (buffer_input)
		copy_request(argv[0], cld.in, req_len);
	else if (req_len >= 0)
		pipe_fixed_length(argv[0], cld.in, req_len);
	else
		close(0);

	if (finish_command(&cld))
		exit(1);
}
Exemple #6
0
int main (int argc, char ** argv)
{
    BOOL status = NO;
    Cmdline * opt = NULL;
    Cmdline * arg = NULL;
    
    /* Create a new premptive client */
    Init();
    
    /* Handle command line args */
    if (argc >= 3) {
       arg = opt = handle_args (argc,argv);
       if (opt && arg) {            
           HTPrint ("method: %c (func %d)\n",opt->method,opt->func);
           HTPrint ("\tDepth: %s \n\tTimeout: %s \n",(opt->D)?opt->D:"UNDEFINED", \
                                                 (opt->T)?opt->T:"UNDEFINED");
           HTPrint ("\tIf: %s \n\tOverwrite: %c \n",(opt->I)?opt->I:"UNDEFINED",opt->O);

           HTPrint ("\tRequest URI: %s%s \n",(arg->base_str)?arg->base_str:"", \
                                         arg->request_uri);
           HTPrint ("\t1° argument: %s \n\t2° argument: %s\n",(arg->arg1)?arg->arg1:"UNDEFINED",
                                                          (arg->arg2)?arg->arg2:"UNDEFINED");

       }
       else {
           HTPrint ("Bad argument\n");
           return -1;
       }           
    }//if argc>3
    else {        
        HTPrint ("Usage: \n");
        HTPrint ("%s <method> <method_function> [options_headers] <function_arguments>\n\n",argv[0]);
        HTPrint ("methods are: -[lufpkcm]\n");
        HTPrint ("method_function are: -[1-4] (see functions order in HTDAV.html)\n");
        HTPrint ("options_headers are:\n");
        HTPrint ("\t-D <depth_header_value>    (for Depth header)\n");
        HTPrint ("\t-T <timeout_header_value>  (for Timeout header)\n");
        HTPrint ("\t-I <if_header_value>       (for If header)\n");
        HTPrint ("\t-O <'T' | 'F'>             (for Overwrite header)\n\n");
        HTPrint ("function_arguments are: \n");
        HTPrint ("for LOCK: %s -l -<[1-3]> [options] <dest-uri> <owner|\"REFRESH\"> \n",argv[0]);
        HTPrint ("\t %s -l -4 [options] <relative-uri> <base_uri> <owner|\"REFRESH\">\n",argv[0]);
        HTPrint ("\t example: %s -l -4 -D 0 /dav_collection/myfile.html http://foo.bar/ mailto:[email protected]\n\n",argv[0]);
       
        HTPrint ("for UNLOCK: %s -u -<[1-2]> [options] <dest-uri> <lock-token>\n",argv[0]);
        HTPrint ("\t %s -u -3 [options] <relative-uri> <base-uri> <lock-token> \n",argv[0]);
        HTPrint ("\t example: %s -u -3 /dav_collection/myfile.html http://foo.bar/ <opaquelocken:blablabla>\n\n",argv[0]);
       
        HTPrint ("for PROPFIND:%s -f -<[1-3]> [options] <dest-uri> [\"allprop\"|\"propname\"|xml body]\n",\
                                                                                            argv[0]);
        HTPrint ("\t %s -f -4 [options] <relative-uri> <base-uri> [\"allprop\"|\"propname\"|xml body]\n",\
                                                                                                argv[0]);
        HTPrint ("\t example: %s -f -4 -D 0 /dav_collection/myfile.html http://foo.bar/ allprop\n\n",argv[0]);
            
        HTPrint ("for PROPPATCH:%s -p -<[1-4]> [options] <dest-uri> <xml body>\n",argv[0]);
        HTPrint ("\t %s -p -4 [options] <relative-uri> <base-uri> <xml body>\n",argv[0]);
        HTPrint ("\t example: %s -p -4 -I <opaquelock:blablabla> /dav_collection/myfile.html http://foo.bar/\\ \n "
                 "\"<?xml version='1.0'?>\n <D:propertyupdate xmlns:D='DAV:' xmlns:Z='http://foo.bar/propertydtd/'>\n"
                 "  <D:set>\n   <D:prop>\n    <Z:author> MyName </Z:author>\n   </D:prop>\n  <D:set>\n"
                 "</D:propertyupdate>\" \n\n",argv[0]);
            
        HTPrint ("for MKCOL: %s -k -<[1-2]> [options] <dest-uri>\n",argv[0]);
        HTPrint ("\t %s -k -3 [options] <relative-uri> <base-uri>\n",argv[0]);
        HTPrint ("\t example: %s -k -3 /dav_collection/newcollection http://foo.bar/\n\n",argv[0]);

        HTPrint ("for COPY: %s -c -<[1-3]> [options] <src-uri> <dst-uri> <xml body|\"NOBODY\">\n",\
                                                                                            argv[0]);
        HTPrint ("\t %s -c -4 [options] <relative-uri> <base-uri> <dst-uri> <xml body|\"NOBODY\">\n",\
                                                                                            argv[0]);
        HTPrint ("\t example: %s -c -4 /dav_collection/myfile.html http://foo.bar/ http://foo.bar/copyfile.html NOBODY\n\n",argv[0]);
        
        HTPrint ("for MOVE: %s -m -<[1-3]> [options] <src-uri> <dst-uri> <xml body|\"NOBODY\">\n",
                                                                                            argv[0]);
        HTPrint ("\t %s -m -4 [options] <relative-uri> <base-uri> <dst-uri> <xml body|\"NOBODY\">\n",\
                                                                                            argv[0]);
        HTPrint ("\t example: %s -m -4 /dav_collection/myfile.html http://foo.bar/ http://foo.bar/movefile.html NOBODY\n\n",argv[0]);
            

        HTPrint ("If, Depth and Timeout headers as defined in RFC2518 section 9\n");
        HTPrint ("lock-token as defined in RFC2518 section 9.5\n");
        HTPrint ("xml body as defined in RFC2518 section 12\n\n");
        return -1;        
    }
        

    
    if (arg) {
        switch (arg->method) {
          case 'l':        
            HTPrint ("LOCK REQUEST\n");   
            if (arg->arg1) {
                arg->arg1 = (!strcasecomp(arg->arg1,"REFRESH"))?NULL:arg->arg1;
                status = lock_request (arg);
            }
            else
                HTPrint ("Bad argument! Please, execute %s for help\n",argv[0]);
            break;
       
          case 'u': 
            HTPrint ("UNLOCK REQUEST\n");    
            status = unlock_request (arg); 
            break;
          
          case 'f':
            HTPrint ("PROPFIND REQUEST\n");  
            status = propfind_request (arg);
            break;
          
          case 'p':
            HTPrint ("PROPPATCH REQUEST\n");  
            status = proppatch_request (arg);
            break;
            
          case 'k':
            HTPrint ("MKCOL REQUEST\n");  
            status = mkcol_request (arg);
            break;

          case 'c':        
            HTPrint ("COPY REQUEST\n");    
            if (arg->arg1) {
                arg->arg2 = (!strcasecomp(arg->arg2,"NOBODY"))?NULL:arg->arg2;
                status = copy_request (arg);
            }
            else
                HTPrint ("Bad argument! Please, execute %s for help\n",argv[0]);

            break;
          
          case 'm':        
            HTPrint ("MOVE REQUEST\n");    
            if (arg->arg1) {
                arg->arg2 = (!strcasecomp(arg->arg2,"NOBODY"))?NULL:arg->arg2;
                status = move_request (arg);
            }
            else
                HTPrint ("Bad argument! Please, execute %s for help...\n",argv[0]);
            break;
             
        }
        
      if (status) HTEventList_newLoop();       
      else    HTPrint ("FAILED\n");                   
      
      HT_FREE (arg); 
   }
   return 0;
}