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