int ldcs_audit_server_md_init(unsigned int port, unsigned int num_ports, 
                              unique_id_t unique_id, ldcs_process_data_t *data)
{
   int rc=0;
   unsigned int *portlist;
   int my_rank, ranks, fanout;
   int i;

   portlist = malloc(sizeof(unsigned int) * (num_ports + 1));
   for (i = 0; i < num_ports; i++) {
      portlist[i] = port + i;
   }
   portlist[num_ports] = 0;

   /* initialize the client (read environment variables) */
   debug_printf2("Opening cobo with port %d - %d\n", portlist[0], portlist[num_ports-1]);
   if (cobo_open(unique_id, (int *) portlist, num_ports, &my_rank, &ranks) != COBO_SUCCESS) {
      printf("Failed to init\n");
      exit(1);
   }
   debug_printf2("cobo_open complete. Cobo rank %d/%d\n", my_rank, ranks);
   free(portlist);

   data->server_stat.md_rank = data->md_rank = my_rank;
   data->server_stat.md_size = data->md_size = ranks;
   data->md_listen_to_parent = 0;

   cobo_get_num_childs(&fanout);
   data->server_stat.md_fan_out = data->md_fan_out = fanout;

   cobo_barrier();

   /* send ack about being ready */
   if (data->md_rank == 0) { 
      int root_fd, ack=13;

      /* send fe client signal to stop (ack)  */
      cobo_get_parent_socket(&root_fd);
    
      ldcs_cobo_write_fd(root_fd, &ack, sizeof(ack));
      debug_printf3("sent FE client signal that server are ready %d\n",ack);
   }
  
   return(rc);
}
Beispiel #2
0
int ldcs_audit_server_fe_md_close ( void *data  ) {
  int rc=0;

#if 0
  int root_fd, ack;

  cobo_server_get_root_socket(&root_fd);
  
  ldcs_cobo_read_fd(root_fd, &ack, sizeof(ack));
  printf("server_rsh_ldcs: got ack=%d from tree root\n",ack);
  
  ack=15;
  ldcs_cobo_write_fd(root_fd, &ack, sizeof(ack));
  printf("server_rsh_ldcs: sent ack=%d to tree root\n",ack);

  /* open and close the server */
  cobo_server_close();
#endif

  return(rc);
}