X-Git-Url: https://hackdaworld.org/gitweb/?p=physik%2Fnlsop.git;a=blobdiff_plain;f=nlsop_server.c;fp=nlsop_server.c;h=e68a4493a90c7b5fdce4f689c51056e3e3df3b3b;hp=5d11e484a312c7832b5ce93d21cb6fb00c6f3084;hb=1be202092955615e3448b1ab1b746347eb20cca3;hpb=bd731011a6e50b9182ee3ef8543d6dbce15406b0 diff --git a/nlsop_server.c b/nlsop_server.c index 5d11e48..e68a449 100644 --- a/nlsop_server.c +++ b/nlsop_server.c @@ -309,11 +309,14 @@ int distribute_jobs(t_event *event,void *allineed) { t_client *c; unsigned char data; d3_lattice d3l; + unsigned int addr[4]; - net=(t_net *)allineed; - c_list=(t_list *)(allineed+sizeof(t_net)); - g_list=(t_list *)(allineed+sizeof(t_net)+sizeof(t_list)); - job=(t_list *)(allineed+sizeof(t_net)+2*sizeof(t_list)); + memcpy(addr,allineed,4*sizeof(unsigned int)); + + net=(t_net *)addr[0]; + c_list=(t_list *)addr[1]; + g_list=(t_list *)addr[2]; + job=(t_list *)addr[3]; count_j=list_count(job); count_c=list_count(c_list); @@ -367,11 +370,14 @@ int parse_incoming(t_event *event,void *allineed) { t_net *net; t_list *c_list,*g_list,*job; + unsigned int addr[4]; + + memcpy(addr,allineed,4*sizeof(unsigned int)); - net=(t_net *)allineed; - c_list=(t_list *)(allineed+sizeof(t_net)); - g_list=(t_list *)(allineed+sizeof(t_net)+sizeof(t_list)); - job=(t_list *)(allineed+sizeof(t_net)+2*sizeof(t_list)); + net=(t_net *)addr[0]; + c_list=(t_list *)addr[1]; + g_list=(t_list *)addr[2]; + job=(t_list *)addr[3]; /* decide what to do */ if(FD_ISSET(net->l_fd,&(event->rfds))) { @@ -402,13 +408,14 @@ int main(int argc,char **argv) t_list g_list; t_list job; void *allyouneed; + unsigned int addr[4]; /* tzzz ... */ - allyouneed=malloc(sizeof(t_net)+3*sizeof(t_list)); - memcpy(allyouneed,&net,sizeof(t_net)); - memcpy(allyouneed+sizeof(t_net),&c_list,sizeof(t_list)); - memcpy(allyouneed+sizeof(t_net)+sizeof(t_list),&g_list,sizeof(t_list)); - memcpy(allyouneed+sizeof(t_net)+2*sizeof(t_list),&job,sizeof(t_list)); + allyouneed=(void *)addr; + addr[0]=(unsigned int)&net; + addr[1]=(unsigned int)&c_list; + addr[2]=(unsigned int)&g_list; + addr[3]=(unsigned int)&job; /* default values */ port=1025; @@ -421,6 +428,11 @@ int main(int argc,char **argv) /* 10 sec event timeout - distributing jobs */ event_set_timeout(&event,10,0); + /* list init */ + list_init(&c_list,1); + list_init(&g_list,1); + list_init(&job,1); + /* connect to server */ network_init(&net,1); network_set_listen_port(&net,port); @@ -431,6 +443,7 @@ int main(int argc,char **argv) /* wait for events :) */ event_math(net.l_fd,&event,READ,ADD); + printf("\nNLSOP_SERVER started!\n\n"); event_start(&event,allyouneed,parse_incoming,distribute_jobs); return 1;