y_socket: debug recvfrom buf ending, prepare handling varoable
This commit is contained in:
@@ -66,6 +66,18 @@ size_t copy_list_y_ptr_STRING_to_one_string(char **p_dst_str, struct main_list_y
|
|||||||
|
|
||||||
#endif /* y_ptr_STRING */
|
#endif /* y_ptr_STRING */
|
||||||
|
|
||||||
|
struct y_variable{
|
||||||
|
char * name;
|
||||||
|
void * value;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct y_variable * y_ptr_VARIABLE;
|
||||||
|
|
||||||
|
struct y_variable * create_y_ptr_VARIABLE(const char *name, size_t size_value);
|
||||||
|
GENERATE_LIST_ALL(y_ptr_VARIABLE)
|
||||||
|
GEN_HEAD_PTR_LIST(y_ptr_VARIABLE)
|
||||||
|
|
||||||
|
|
||||||
struct y_socket_t{
|
struct y_socket_t{
|
||||||
struct pollfd *fds;
|
struct pollfd *fds;
|
||||||
size_t size_fds;
|
size_t size_fds;
|
||||||
|
|||||||
@@ -752,7 +752,7 @@ void record_buffer_to_file(void *arg){
|
|||||||
|
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
#if 1
|
|
||||||
void receve_from_node(struct pollfd *fds, struct main_list_y_ptr_HEADER_T *m_head_l_t, struct main_list_y_ptr_STRING *m_str, y_NODE_T node /*char * srcAddr*/, char *filename ){
|
void receve_from_node(struct pollfd *fds, struct main_list_y_ptr_HEADER_T *m_head_l_t, struct main_list_y_ptr_STRING *m_str, y_NODE_T node /*char * srcAddr*/, char *filename ){
|
||||||
//printf("\ndebug: <<<< receve_from_node %s %ld\n\n",msg,count);
|
//printf("\ndebug: <<<< receve_from_node %s %ld\n\n",msg,count);
|
||||||
char srcAddr[64];
|
char srcAddr[64];
|
||||||
@@ -772,6 +772,9 @@ void receve_from_node(struct pollfd *fds, struct main_list_y_ptr_HEADER_T *m_hea
|
|||||||
//printf("debug: index=[%ld] \n BEGIN file ***\n%s\n END\n",local_current->index,buf_loc);
|
//printf("debug: index=[%ld] \n BEGIN file ***\n%s\n END\n",local_current->index,buf_loc);
|
||||||
if(js_header_v){
|
if(js_header_v){
|
||||||
|
|
||||||
|
struct js_value *js_cmd = get_js_value_of_key("cmd", js_header_v );
|
||||||
|
if(js_cmd && js_cmd->type.object.value->code_type == jstype_string){
|
||||||
|
char * buf_cmd_v = js_cmd->type.object.value->type.string;
|
||||||
|
|
||||||
struct js_value *js_seq_v = get_js_value_of_key("seq", js_header_v );
|
struct js_value *js_seq_v = get_js_value_of_key("seq", js_header_v );
|
||||||
char eof=0;
|
char eof=0;
|
||||||
@@ -812,9 +815,23 @@ void receve_from_node(struct pollfd *fds, struct main_list_y_ptr_HEADER_T *m_hea
|
|||||||
if(local_header){
|
if(local_header){
|
||||||
struct main_list_y_ptr_MSG_CONTENT_T *m_content_l = local_header->value->m_content_l;
|
struct main_list_y_ptr_MSG_CONTENT_T *m_content_l = local_header->value->m_content_l;
|
||||||
struct list_y_ptr_MSG_CONTENT_T * tmpCnt_l = m_content_l->begin_list;
|
struct list_y_ptr_MSG_CONTENT_T * tmpCnt_l = m_content_l->begin_list;
|
||||||
|
if(strncmp(buf_cmd_v+5,"file",4)==0){
|
||||||
|
int fd_file ;
|
||||||
|
if((fd_file = open(tmpCnt_l->value->nameid, O_WRONLY | O_CREAT ,
|
||||||
|
S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)) == -1){
|
||||||
|
fprintf(stderr,"erreur write %s\n",tmpCnt_l->value->nameid);
|
||||||
|
break;//return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
while(tmpCnt_l){
|
while(tmpCnt_l){
|
||||||
|
write(fd_file, tmpCnt_l->value->content, tmpCnt_l->value->size_content);
|
||||||
printf("debug: nameid:%s seq = %ld eof %d\n\n%s\n",tmpCnt_l->value->nameid, tmpCnt_l->value->seq, tmpCnt_l->value->eof, tmpCnt_l->value->content);
|
printf("debug: nameid:%s seq = %ld eof %d\n\n%s\n",tmpCnt_l->value->nameid, tmpCnt_l->value->seq, tmpCnt_l->value->eof, tmpCnt_l->value->content);
|
||||||
tmpCnt_l=tmpCnt_l->next;
|
tmpCnt_l=tmpCnt_l->next;
|
||||||
|
}
|
||||||
|
close(fd_file);
|
||||||
|
}else if(strncmp(buf_cmd_v+5,"var",3)==0){
|
||||||
|
|
||||||
}
|
}
|
||||||
struct list_y_ptr_HEADER_T * l_head_to_remove = pull_index_from_list_y_ptr_HEADER_T(m_head_l_t, local_header->index);
|
struct list_y_ptr_HEADER_T * l_head_to_remove = pull_index_from_list_y_ptr_HEADER_T(m_head_l_t, local_header->index);
|
||||||
free_y_ptr_HEADER_T(l_head_to_remove->value);
|
free_y_ptr_HEADER_T(l_head_to_remove->value);
|
||||||
@@ -854,6 +871,10 @@ void receve_from_node(struct pollfd *fds, struct main_list_y_ptr_HEADER_T *m_hea
|
|||||||
}else{
|
}else{
|
||||||
|
|
||||||
printf("debug: \n NNNNNNNNNNNNNNNNOOOOOOOOOOOOOSSSSSSSSSSSSSSSEEEEEEEEEEEEEEQQQQQQQQQQQQQ :type header : %d \n",js_header_v->code_type);
|
printf("debug: \n NNNNNNNNNNNNNNNNOOOOOOOOOOOOOSSSSSSSSSSSSSSSEEEEEEEEEEEEEEQQQQQQQQQQQQQ :type header : %d \n",js_header_v->code_type);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
printf("debug: \n NO CMD :type header : %d \n",js_header_v->code_type);
|
||||||
|
|
||||||
}
|
}
|
||||||
free_js_value(js_header_v);
|
free_js_value(js_header_v);
|
||||||
}else{
|
}else{
|
||||||
@@ -885,7 +906,6 @@ void receve_from_node(struct pollfd *fds, struct main_list_y_ptr_HEADER_T *m_hea
|
|||||||
//free(timeNow);
|
//free(timeNow);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
/*
|
/*
|
||||||
char filename[500];
|
char filename[500];
|
||||||
int fd_file;
|
int fd_file;
|
||||||
|
|||||||
@@ -5,6 +5,28 @@
|
|||||||
//#include "y_socket_t/y_list_string.h"
|
//#include "y_socket_t/y_list_string.h"
|
||||||
//#include "json_t/json_t.h"
|
//#include "json_t/json_t.h"
|
||||||
|
|
||||||
|
struct y_variable * create_y_ptr_VARIABLE(const char *name, size_t size_value){
|
||||||
|
struct y_variable *variable=malloc(sizeof(struct y_variable));
|
||||||
|
size_t len_name = strlen(name);
|
||||||
|
variable->name=malloc(len_name+1);
|
||||||
|
variable->value=malloc(size_value);
|
||||||
|
if(name){
|
||||||
|
memcpy(variable->name, name, len_name+1);
|
||||||
|
if(name[len_name]!='\0')
|
||||||
|
variable->name[len_name]='\0';
|
||||||
|
}
|
||||||
|
return variable;
|
||||||
|
}
|
||||||
|
|
||||||
|
GEN_LIST_ALL(y_ptr_VARIABLE)
|
||||||
|
|
||||||
|
GEN_FUNC_PTR_LIST_FREE(y_ptr_VARIABLE){
|
||||||
|
free(arg->name);
|
||||||
|
free(arg->value);
|
||||||
|
free(arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const int af_array[nbIpVersion]={AF_INET, AF_INET6};
|
const int af_array[nbIpVersion]={AF_INET, AF_INET6};
|
||||||
|
|
||||||
struct y_socket_t * y_socket_create(char *port, size_t size_fds, int nb_workers){
|
struct y_socket_t * y_socket_create(char *port, size_t size_fds, int nb_workers){
|
||||||
@@ -288,23 +310,18 @@ void* y_socket_handler_(void *arg){
|
|||||||
else if(strncmp(buf, "post", 4)==0){
|
else if(strncmp(buf, "post", 4)==0){
|
||||||
if(strncmp(buf+5,"file",4)==0){
|
if(strncmp(buf+5,"file",4)==0){
|
||||||
char *filename = buf+10;
|
char *filename = buf+10;
|
||||||
struct main_list_y_ptr_HEADER_T *m_head_l_t = argH->m_head_l_t;
|
receve_from_node(fds, argH->m_head_l_t, m_str,argH->node, filename );
|
||||||
//char srcAddr[BUF_SIZE];
|
|
||||||
//set_tempAddr_from_node(srcAddr, argH->node);
|
|
||||||
receve_from_node(fds, m_head_l_t, m_str,argH->node/* srcAddr*/, filename /*+ index_f*/);
|
|
||||||
m_str = NULL;
|
m_str = NULL;
|
||||||
/*
|
|
||||||
pthread_mutex_lock(sock->mut_go_on);
|
|
||||||
sock->go_on = 0;
|
|
||||||
pthread_mutex_unlock(sock->mut_go_on);
|
|
||||||
*/
|
|
||||||
// kill_all_workers(argw);
|
|
||||||
// printf("debug: kill_all\n");
|
|
||||||
}else if(strncmp(buf+5,"ok",2)==0){
|
}else if(strncmp(buf+5,"ok",2)==0){
|
||||||
char *nameid = buf+8;
|
char *nameid = buf+8;
|
||||||
y_append_to_ok_header_l_(argH->m_ok_head_l_t,nameid );
|
y_append_to_ok_header_l_(argH->m_ok_head_l_t,nameid );
|
||||||
|
}else if(strncmp(buf+5,"var",3)==0){
|
||||||
|
char *var_nameid = buf+9;
|
||||||
|
receve_from_node(fds, argH->m_head_l_t, m_str,argH->node, var_nameid );
|
||||||
|
m_str = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -435,8 +452,7 @@ void *y_socket_poll_fds(void *arg){
|
|||||||
while((nread = recvfrom(fds[af].fd, buf, BUF_SIZE, 0,
|
while((nread = recvfrom(fds[af].fd, buf, BUF_SIZE, 0,
|
||||||
(struct sockaddr *)&(node.addr), &(node.addr_len))) == BUF_SIZE){
|
(struct sockaddr *)&(node.addr), &(node.addr_len))) == BUF_SIZE){
|
||||||
|
|
||||||
if(buf[nread-1]=='\n')
|
//if(buf[nread-1]=='\n') buf[nread-1]='\0';
|
||||||
buf[nread-1]='\0';
|
|
||||||
buf[nread]='\0';
|
buf[nread]='\0';
|
||||||
|
|
||||||
y_ptr_STRING y_buf = create_y_ptr_STRING(buf, nread);
|
y_ptr_STRING y_buf = create_y_ptr_STRING(buf, nread);
|
||||||
@@ -451,8 +467,7 @@ void *y_socket_poll_fds(void *arg){
|
|||||||
if(nread == -1)
|
if(nread == -1)
|
||||||
fprintf(stderr,"error recvfrom\n");
|
fprintf(stderr,"error recvfrom\n");
|
||||||
else if(nread >= 0 && nread < BUF_SIZE){
|
else if(nread >= 0 && nread < BUF_SIZE){
|
||||||
if(nread && buf[nread-1]=='\n'
|
//if(nread && buf[nread-1]=='\n') buf[nread-1]='\0';
|
||||||
) buf[nread-1]='\0';
|
|
||||||
buf[nread]='\0';
|
buf[nread]='\0';
|
||||||
//printf("msg: %s\n",buf);
|
//printf("msg: %s\n",buf);
|
||||||
y_ptr_STRING y_buf = create_y_ptr_STRING(buf, nread);
|
y_ptr_STRING y_buf = create_y_ptr_STRING(buf, nread);
|
||||||
|
|||||||
Reference in New Issue
Block a user