int ret;
d3_lattice d3l;
info info;
- unsigned char data;
t_job *j;
j=(t_job *)priv.job.current->data;
- printf("receiving data from client (%d)\n",j->size);
- data=DATA_OK;
-
- /* initial data_ok to start transmit on client */
- network_send_chan(&(priv.net),gi,&data,sizeof(unsigned char));
+ printf("receiving data from client (#cells=%d)\n",j->size);
network_receive_chan(&(priv.net),gi,(unsigned char *)&d3l,
sizeof(d3_lattice));
- network_send_chan(&(priv.net),gi,&data,sizeof(unsigned char));
- printf("debug: got d3_lattice\n");
-
network_receive_chan(&(priv.net),gi,(unsigned char *)&info,sizeof(info));
- network_send_chan(&(priv.net),gi,&data,sizeof(unsigned char));
- printf("debug: got info\n");
-
network_receive_chan(&(priv.net),gi,j->ac,j->size*sizeof(unsigned char));
- network_send_chan(&(priv.net),gi,&data,sizeof(unsigned char));
- printf("debug: got ac\n");
-
network_receive_chan(&(priv.net),gi,(unsigned char *)j->cc,
j->size*sizeof(int));
- network_send_chan(&(priv.net),gi,&data,sizeof(unsigned char));
- printf("debug: got cc\n");
-
network_receive_chan(&(priv.net),gi,(unsigned char *)&(j->step),sizeof(int));
- network_send_chan(&(priv.net),gi,&data,sizeof(unsigned char));
- printf("debug: got steps\n");
if(dc!=DC_QUIT) {
snprintf(filename,128,"./data/nlsop_b%f_c%f_s%f_ds%d_dr%f_-_%d_of_%d.save",
data=GUI_INFO;
- count=list_count(&(priv.job));
-
- printf("sending job info\n");
-
network_send_chan(&(priv.net),gi,&data,sizeof(unsigned char));
- network_send_chan(&(priv.net),gi,(unsigned char *)&count,sizeof(int));
+ printf("sending job + client list ...\n");
+ count=list_count(&(priv.job));
+ network_send_chan(&(priv.net),gi,(unsigned char *)&count,sizeof(int));
list_reset(&(priv.job));
for(i=0;i<count;i++) {
network_send_chan(&(priv.net),gi,priv.job.current->data,sizeof(t_job));
list_next(&(priv.job));
}
+ count=list_count(&(priv.client));
+ network_send_chan(&(priv.net),gi,(unsigned char *)&count,sizeof(int));
+ list_reset(&(priv.client));
+ for(i=0;i<count;i++) {
+ network_send_chan(&(priv.net),gi,priv.client.current->data,
+ sizeof(t_client));
+ list_next(&(priv.client));
+ }
+
return 1;
}
void destroy_it(int signum) {
+ t_job *j;
+
printf("connection to client (ch %d) fucked up!\n",gi);
event_math(priv.net.connection[gi].fd,&(priv.event),READ,REMOVE);
network_close(&(priv.net),gi);
list_del_current(&(priv.client));
printf("removed client from list\n");
}
+ if(list_search_data(&(priv.job),&gi,sizeof(int))==L_SUCCESS) {
+ printf("associated job found. resetting & queueing job.\n");
+ j=(t_job *)priv.job.current->data;
+ j->channel=-1;
+ j->status=IN_QUEUE;
+ j->progress=0;
+ }
if(list_search_data(&(priv.gui),&gi,sizeof(int))==L_SUCCESS) {
list_del_current(&(priv.gui));
printf("removed gui from list\n");