X-Git-Url: https://hackdaworld.org/gitweb/?p=physik%2Fnlsop.git;a=blobdiff_plain;f=nlsop_client.c;h=8a1c81c72f48aecf44771a577db60a463bb8adb7;hp=f7938edad2338adb684716f5ce5a375211025ba6;hb=acc832c81063b8dd02cf97ff78989127f6caed7b;hpb=d5c65b3df98d6ad85c2e70cf11bee66b59fd22f3 diff --git a/nlsop_client.c b/nlsop_client.c index f7938ed..8a1c81c 100644 --- a/nlsop_client.c +++ b/nlsop_client.c @@ -64,6 +64,7 @@ d3_lattice *gd3_l; info *gmy_info; int *gi; unsigned char dc; +unsigned char shut_down; int get_data_and_calc(t_event *event,void *allineed); int nop(t_event *event,void *allineed); @@ -310,6 +311,7 @@ u32 get_reject_graph(info *my_info,d3_lattice *d3_l,char *file,u32 *graph) { void send_data(int signum) { int c; + unsigned char ack=DATA_OK; c=gd3_l->max_x*gd3_l->max_y*gd3_l->max_z; @@ -319,6 +321,9 @@ void send_data(int signum) { network_send_chan(gnet,0,gd3_l->status,c*sizeof(unsigned char)); network_send_chan(gnet,0,(unsigned char *)gd3_l->extra,c*sizeof(int)); network_send_chan(gnet,0,(unsigned char *)gi,sizeof(int)); + network_send_chan(gnet,0,&ack,sizeof(unsigned char)); + + if(dc==DC_QUIT) shut_down=1; } @@ -400,6 +405,8 @@ int main(int argc,char **argv) printf("idle, waiting for jobs ...\n"); event_start(&event,NULL,get_data_and_calc,nop); + network_shutdown(&net); + return 1; } @@ -434,6 +441,7 @@ int get_data_and_calc(t_event *event,void *allineed) { gmy_info=&my_info; gi=&i; dc=0; + shut_down=0; printf("got a new job ...\n"); @@ -468,6 +476,11 @@ int get_data_and_calc(t_event *event,void *allineed) { sizeof(int)); network_send(net->connection[0].fd,&data,sizeof(unsigned char)); } + if(c_step==0) { + printf("important: clear status/conc data!\n"); + memset(d3_l.status,0,j*sizeof(unsigned char)); + memset(d3_l.extra,0,j*sizeof(int)); + } } else { printf("unknown instruction, restarting ...\n"); @@ -541,6 +554,14 @@ int get_data_and_calc(t_event *event,void *allineed) { dc=DC_QUIT; } if(i%my_info.s_rate==0) sputter(&d3_l); + if(shut_down) { + free(d3_l.status); + free(d3_l.extra); + free(c_profile); + free(n_e_loss); + free(nel_z); + event_stop(event); + } } /* finished */