From 3d8104a33fb2ddca332dcb5a640885a33195b101 Mon Sep 17 00:00:00 2001 From: hackbard Date: Fri, 29 Oct 2004 13:38:47 +0000 Subject: [PATCH] finished nlsop_client code --- nlsop_client.c | 231 ++++++++++++++++++++++++++----------------------- 1 file changed, 123 insertions(+), 108 deletions(-) diff --git a/nlsop_client.c b/nlsop_client.c index 403bfe0..c635892 100644 --- a/nlsop_client.c +++ b/nlsop_client.c @@ -40,17 +40,35 @@ #include #include +#include + #include "nlsop.h" #include "dfbapi.h" #include "random.h" -#include "../api/network.h" -#include "../api/event.h" -#include "../api/list.h" +#include "network.h" +#include "event.h" #define MAKE_AMORPH(N) *(N)|=AMORPH #define MAKE_CRYST(N) *(N)&=~AMORPH +#define NLSOP_CLIENT 'c' +#define NLSOP_NJOB 'N' +#define NLSOP_CJOB 'C' + +/* globals */ + +char p_file[MAX_CHARS]; +char n_e_file[MAX_CHARS]; +char r_file[MAX_CHARS]; +t_net *gnet; +d3_lattice *gd3_l; +info *gmy_info; +int *gi; +unsigned char dc; + +int get_data_and_calc(t_event *event,void *allineed); + int usage(char *prog) { puts("usage:"); @@ -221,9 +239,21 @@ int distrib_c(d3_lattice *d3_l,info *my_info,int step,u32 rj_m,u32 *rj_g) } /* save to file --> send to server :) --> T O D O <-- */ -int send_data( ) { +void send_data(int signum) { + + int c; + + c=gd3_l->max_x*gd3_l->max_y*gd3_l->max_z; + + network_send(gnet->connection[0].fd,&dc,1); + network_send(gnet->connection[0].fd,(unsigned char *)gd3_l, + sizeof(d3_lattice)); + network_send(gnet->connection[0].fd,(unsigned char *)gmy_info,sizeof(info)); + network_send(gnet->connection[0].fd,gd3_l->status,c*sizeof(unsigned char)); + network_send(gnet->connection[0].fd,(unsigned char *)gd3_l->extra, + c*sizeof(int)); + network_send(gnet->connection[0].fd,(unsigned char *)gi,sizeof(int)); - return 1; } int save_to_file(char *sf,d3_lattice *d3_l,info *my_inf) @@ -261,78 +291,6 @@ int save_to_file(char *sf,d3_lattice *d3_l,info *my_inf) return 1; } -/* load from file --> receive from server :) --> T O D O <-- */ -int receive_data( ) { - - return 1; -} - -int load_from_file(char *lf,d3_lattice *d3_l,info *my_inf) -{ - - int lf_fd,c,pos,end,data,data_len,strip; - - if((lf_fd=open(lf,O_RDONLY))<0) - { - puts("cannot open load file"); - return -1; - } - if(read(lf_fd,d3_l,sizeof(d3_lattice))max_x*d3_l->max_y*d3_l->max_z; - data_len=data*(sizeof(int)+sizeof(unsigned char)); - printf("there are %d volumes so we need %d of bytes\n",data,data_len); - end=lseek(lf_fd,0,SEEK_END); - c=end-pos-data_len; - printf("end: %d => length: %d => guessed info size: %d bytes\n",end,end-pos,c); - strip=sizeof(info)-c; - printf("as real programs info size is %d, we strip %d bytes\n",sizeof(info),strip); - lseek(lf_fd,pos,SEEK_SET); - c=sizeof(info); - if(strip>0) c-=strip; - if(c<0) - { - puts("info smaller then strip size"); - return -1; - } - if(read(lf_fd,my_inf,c)0) memset(my_inf+c,0,strip); - if(strip<0) lseek(lf_fd,(-1*strip),SEEK_CUR); - c=d3_l->max_x*d3_l->max_y*d3_l->max_z; - if((d3_l->status=(unsigned char*)malloc(c*sizeof(unsigned char)))==NULL) - { - puts("cannot allocate status buffer"); - return -1; - } - if((d3_l->extra=(int *)malloc(c*sizeof(int)))==NULL) - { - puts("cannot allocate concentration buffer"); - return -1; - } - if(read(lf_fd,d3_l->status,c*sizeof(unsigned char))extra,c*sizeof(int))connection[0].fd,data,1); + if(data[0]==NLSOP_NJOB || data[0]==NLSOP_CJOB) { + network_receive(net->connection[0].fd,(unsigned char *)&d3_l, + sizeof(d3_lattice)); + network_receive(net->connection[0].fd,(unsigned char *)&my_info, + sizeof(info)); + c_step=0; + j=d3_l.max_x*d3_l.max_y*d3_l.max_z; + d3_l.status=(unsigned char *)malloc(j*sizeof(unsigned char)); + if(d3_l.status==NULL) { + printf("status alloc failed\n"); + return -1; + } + d3_l.extra=(int *)malloc(j*sizeof(int)); + if(d3_l.extra==NULL) { + printf("extra malloc failed\n"); + return -1; + } + if(data[0]==NLSOP_CJOB) { + network_receive(net->connection[0].fd,d3_l.status, + j*sizeof(unsigned char)); + network_receive(net->connection[0].fd,(unsigned char *)d3_l.extra, + j*sizeof(int)); + network_receive(net->connection[0].fd,(unsigned char *)&c_step, + sizeof(int)); + } + } /* care for signals */ - err_dc=DC_QUIT; - signal(SIGTERM,send_data(&d3_l,&my_info,i,&err_dc)); + dc=DC_QUIT; + signal(SIGTERM,send_data); /* rand init */ if(!strcmp(r_file,"")) rand_init(NULL); @@ -511,8 +525,7 @@ int main(int argc,char **argv) printf("failed allocating nel_z array mem\n"); return -1; } - for(i=0;i