61 lines
1.8 KiB
C++
61 lines
1.8 KiB
C++
#include "chatTask.h"
|
|
|
|
void *taskThread(void *arg){
|
|
printf("-------------------- new connect --------------------\n");
|
|
// pthread_mutex_lock(&_mxMessage); //lock the mutex
|
|
// pthread_mutex_unlock(&_mxMessage); //unlock the mutex
|
|
int clientFd = *((int *)arg);
|
|
char recvMsg[1024*2];
|
|
int recvLen;
|
|
int head_len = sizeof(DeMessageHead);
|
|
|
|
free(arg);
|
|
arg = NULL;
|
|
|
|
Session session(clientFd);
|
|
while (1)
|
|
{
|
|
if(session.readEvent() == RET_EXIT)
|
|
{
|
|
close(clientFd);
|
|
return NULL;
|
|
}
|
|
#if 0
|
|
memset(recvMsg,'\0',sizeof(recvMsg));
|
|
recvLen = read(clientFd, recvMsg, sizeof(DeMessageHead));
|
|
if (recvLen <= 0)
|
|
{ //下线
|
|
printf("offline\n");
|
|
close(clientFd);
|
|
return NULL;
|
|
}
|
|
printf("readLen:%d,HeadLen:%d\n",recvLen,sizeof(DeMessageHead));
|
|
memmove((void*)&headTmp,recvMsg,sizeof(DeMessageHead));
|
|
printf("mark:%s,encoded:%d,length:%d,version:%d\n",headTmp.mark,headTmp.encoded,headTmp.length,headTmp.version);
|
|
|
|
memset(recvMsg,'\0',sizeof(recvMsg));
|
|
recvLen = read(clientFd, recvMsg, sizeof(DeMessagePacket));
|
|
printf("readLen:%d,PacketLen:%d\n",recvLen,sizeof(DeMessagePacket));
|
|
if (recvLen <= 0)
|
|
{ //下线
|
|
printf("offline\n");
|
|
close(clientFd);
|
|
return NULL;
|
|
}
|
|
memmove((void*)&packetTmp,recvMsg,sizeof(DeMessagePacket));
|
|
printf("command:%d,error:%d,,mode:%d,sequence:%d\n",packetTmp.command,packetTmp.error,packetTmp.mode,packetTmp.sequence);
|
|
|
|
memset(recvMsg,'\0',sizeof(recvMsg));
|
|
recvLen = read(clientFd, recvMsg, headTmp.length - sizeof(DeMessagePacket));
|
|
printf("readLen:%d,HeadLen:%d\n",recvLen,sizeof(DeMessageHead));
|
|
if (recvLen <= 0)
|
|
{ //下线
|
|
printf("offline\n");
|
|
close(clientFd);
|
|
return NULL;
|
|
}
|
|
printf("msg:%s\n",recvMsg);
|
|
#endif
|
|
}
|
|
return NULL;
|
|
} |