Working an message handling ...

FossilOrigin-Name: 0003352d0d85b794da58c08fffb0df1066a808b63b060b28cff74b4c87ca675b
This commit is contained in:
7u83@mail.ru
2014-08-22 06:21:38 +00:00
parent 8c77dec5a3
commit b68642eec4
4 changed files with 44 additions and 27 deletions

View File

@ -53,6 +53,9 @@ struct conn{
// int last_response_seqnum;
// int last_response_rid;
struct cwrmsg cwrmsg;
uint8_t cwrmsg_buffer[65536];
struct cwmsg req_msg;
struct cwmsg resp_msg;

View File

@ -7,17 +7,22 @@
#include "conn.h"
#include "cwrmsg.h"
struct args{
struct conn * conn;
struct cwrmsg * cwrmsg;
};
static int pmessage(void *w, struct cwrmsg * cwrmsg)
static int pmessage(void *p, struct cwrmsg * cwrmsg)
{
uint8_t * buffer;
buffer = malloc( sizeof (struct cwrmsg) + cwrmsg->msgelems_len);
struct args * args = (struct args*)p;
struct conn * conn = args->conn;
memcpy(buffer,cwrmsg,sizeof(struct cwrmsg));
memcpy(buffer+sizeof(struct cwrmsg),cwrmsg->msgelems,cwrmsg->msgelems_len);
((struct cwrmsg*)(buffer))->msgelems=buffer+sizeof(struct cwrmsg);
*((void**)w) = (void*)buffer;
memcpy(&conn->cwrmsg,cwrmsg,sizeof(struct cwrmsg));
memcpy(conn->cwrmsg_buffer,cwrmsg->msgelems,cwrmsg->msgelems_len);
conn->cwrmsg.msgelems=conn->cwrmsg_buffer;
args->cwrmsg = &conn->cwrmsg;
return 0;
}
@ -26,15 +31,16 @@ static int pmessage(void *w, struct cwrmsg * cwrmsg)
struct cwrmsg * conn_get_message(struct conn * conn)
{
struct cwrmsg * cwrmsg=0;
uint8_t buf[2048];
int len=2048;
struct args args;
args.cwrmsg=0;
args.conn=conn;
uint8_t buf[2024];
int len=2024;
int n = conn->read(conn,buf,len);
if (n>0)
conn_process_packet(conn,buf,n,pmessage,&cwrmsg);
conn_process_packet(conn,buf,n,pmessage,&args);
return cwrmsg;
return args.cwrmsg;
}

View File

@ -4,7 +4,6 @@
#include "sock.h"
#include "cw_util.h"
#include <stdio.h>
struct cwrmsg * conn_get_response(struct conn * conn)
{
@ -14,11 +13,6 @@ struct cwrmsg * conn_get_response(struct conn * conn)
int type = cwmsg->type+1;
printf ("Awaiting response message for type=%d\n",type);
struct cwrmsg * cwrmsg;
int i;
@ -32,7 +26,6 @@ struct cwrmsg * conn_get_response(struct conn * conn)
cw_dbg(DBG_CW_MSG,"Received message from %s, type=%d - %s"
,sock_addr2str(&conn->addr),cwrmsg->type,cw_msgtostr(cwrmsg->type));
if (cwrmsg->type == type){
printf("Jea!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11\n");
return cwrmsg;
}