This commit is contained in:
azw 2023-05-07 12:23:59 +00:00
parent cd01ffe9c1
commit 8fd6610fa8

View File

@ -229,7 +229,8 @@ void App::AddSocketMsg(SocketFrom_e sockfrom,
int bodylen, int bodylen,
int tag) int tag)
{ {
MsgNode *p = (MsgNode*)malloc(sizeof(MsgNode)); char* buf = MMCache::Instance()->AllocSocketMsg(sizeof(MsgNode) + bodylen);
MsgNode *p = (MsgNode*)buf;
memset(p, 0, sizeof(MsgNode)); memset(p, 0, sizeof(MsgNode));
p->sockfrom = sockfrom; p->sockfrom = sockfrom;
p->ip_saddr = ip_saddr; p->ip_saddr = ip_saddr;
@ -240,7 +241,7 @@ void App::AddSocketMsg(SocketFrom_e sockfrom,
p->buflen = bodylen; p->buflen = bodylen;
p->tag = tag; p->tag = tag;
if (bodylen > 0) { if (bodylen > 0) {
p->buf = (char*)malloc(bodylen); p->buf = buf + sizeof(MsgNode);
memmove(p->buf, msgbody, bodylen); memmove(p->buf, msgbody, bodylen);
} }
msg_mutex_->lock(); msg_mutex_->lock();
@ -365,10 +366,7 @@ void App::DispatchMsg()
} }
break; break;
} }
if (pdelnode->buf) { MMCache::Instance()->FreeSocketMsg((char*)pdelnode);
free(pdelnode->buf);
}
free(pdelnode);
working_msgnode_size_--; working_msgnode_size_--;
if (a8::XGetTickCount() - starttick > 200) { if (a8::XGetTickCount() - starttick > 200) {
break; break;
@ -542,10 +540,7 @@ void App::FreeSocketMsgQueue()
while (work_node_) { while (work_node_) {
MsgNode* pdelnode = work_node_; MsgNode* pdelnode = work_node_;
work_node_ = work_node_->next; work_node_ = work_node_->next;
if (pdelnode->buf) { MMCache::Instance()->FreeSocketMsg((char*)pdelnode);
free(pdelnode->buf);
}
free(pdelnode);
if (!work_node_) { if (!work_node_) {
work_node_ = top_node_; work_node_ = top_node_;
top_node_ = nullptr; top_node_ = nullptr;
@ -571,7 +566,7 @@ void App::FreeUdpMsgQueue()
free((void*)pdelnode->pkt->buf); free((void*)pdelnode->pkt->buf);
} }
delete pdelnode->pkt; delete pdelnode->pkt;
free(pdelnode); MMCache::Instance()->FreeUdpMsg((char*)pdelnode);
} }
if (!udp_work_node_) { if (!udp_work_node_) {
udp_work_node_ = udp_top_node_; udp_work_node_ = udp_top_node_;
@ -584,7 +579,8 @@ void App::FreeUdpMsgQueue()
void App::AddUdpMsg(a8::UdpPacket* pkt) void App::AddUdpMsg(a8::UdpPacket* pkt)
{ {
UdpMsgNode *p = (UdpMsgNode*) malloc(sizeof(UdpMsgNode)); char* buf = MMCache::Instance()->AllocUdpMsg(sizeof(UdpMsgNode));
UdpMsgNode *p = (UdpMsgNode*)buf;
memset(p, 0, sizeof(UdpMsgNode)); memset(p, 0, sizeof(UdpMsgNode));
p->pkt = pkt; p->pkt = pkt;
udp_msg_mutex_->lock(); udp_msg_mutex_->lock();
@ -621,7 +617,7 @@ void App::DispatchUdpMsg()
free((void*)pdelnode->pkt->buf); free((void*)pdelnode->pkt->buf);
} }
delete pdelnode->pkt; delete pdelnode->pkt;
free(pdelnode); MMCache::Instance()->FreeUdpMsg((char*)pdelnode);
} }
udp_working_msgnode_size_--; udp_working_msgnode_size_--;
if (a8::XGetTickCount() - starttick > 200) { if (a8::XGetTickCount() - starttick > 200) {