cwWebSock.cpp : Websock now performs a single memory allocation in send() rather than multiple in send() and exec().
This commit is contained in:
parent
6ed0f6c080
commit
6b771c0c88
@ -313,7 +313,7 @@ namespace cw
|
|||||||
|
|
||||||
msg_t* t = m1->link;
|
msg_t* t = m1->link;
|
||||||
|
|
||||||
mem::free(m1->msg);
|
//mem::free(m1->msg);
|
||||||
mem::free(m1);
|
mem::free(m1);
|
||||||
|
|
||||||
m1 = t;
|
m1 = t;
|
||||||
@ -344,7 +344,7 @@ namespace cw
|
|||||||
|
|
||||||
while((m = p->_q->pop()) != nullptr)
|
while((m = p->_q->pop()) != nullptr)
|
||||||
{
|
{
|
||||||
mem::free(m->msg);
|
//mem::free(m->msg);
|
||||||
mem::free(m);
|
mem::free(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -363,7 +363,7 @@ namespace cw
|
|||||||
{
|
{
|
||||||
msg_t* tmp = m->link;
|
msg_t* tmp = m->link;
|
||||||
|
|
||||||
mem::free(m->msg);
|
//mem::free(m->msg);
|
||||||
mem::free(m);
|
mem::free(m);
|
||||||
m = tmp;
|
m = tmp;
|
||||||
}
|
}
|
||||||
@ -502,10 +502,15 @@ cw::rc_t cw::websock::destroy( handle_t& h )
|
|||||||
cw::rc_t cw::websock::send(handle_t h, unsigned protocolId, unsigned sessionId, const void* msg, unsigned byteN )
|
cw::rc_t cw::websock::send(handle_t h, unsigned protocolId, unsigned sessionId, const void* msg, unsigned byteN )
|
||||||
{
|
{
|
||||||
rc_t rc = kOkRC;
|
rc_t rc = kOkRC;
|
||||||
|
|
||||||
|
uint8_t* mem = mem::allocZ<uint8_t>( sizeof(msg_t) + LWS_PRE + byteN );
|
||||||
|
//msg_t* m = mem::allocZ<msg_t>(1);
|
||||||
|
//m->msg = mem::allocZ<unsigned char>(byteN);
|
||||||
|
|
||||||
|
msg_t* m = (msg_t*)mem;
|
||||||
|
m->msg = mem + sizeof(msg_t);
|
||||||
|
|
||||||
msg_t* m = mem::allocZ<msg_t>(1);
|
memcpy(m->msg+LWS_PRE,msg,byteN);
|
||||||
m->msg = mem::allocZ<unsigned char>(byteN);
|
|
||||||
memcpy(m->msg,msg,byteN);
|
|
||||||
m->msgByteN = byteN;
|
m->msgByteN = byteN;
|
||||||
m->protocolId = protocolId;
|
m->protocolId = protocolId;
|
||||||
m->sessionId = sessionId;
|
m->sessionId = sessionId;
|
||||||
@ -593,12 +598,13 @@ cw::rc_t cw::websock::exec( handle_t h, unsigned timeOutMs )
|
|||||||
|
|
||||||
|
|
||||||
// add the pre-padding bytes to the msg
|
// add the pre-padding bytes to the msg
|
||||||
unsigned char* msg = mem::allocZ<unsigned char>(LWS_PRE + m->msgByteN);
|
//unsigned char* msg = mem::allocZ<unsigned char>(LWS_PRE + m->msgByteN);
|
||||||
memcpy( msg+LWS_PRE, m->msg, m->msgByteN );
|
//memcpy( msg+LWS_PRE, m->msg, m->msgByteN );
|
||||||
|
|
||||||
mem::free(m->msg); // free the original msg buffer
|
//mem::free(m->msg); // free the original msg buffer
|
||||||
|
|
||||||
|
//m->msg = msg;
|
||||||
|
|
||||||
m->msg = msg;
|
|
||||||
m->msgId = ps->nextNewMsgId; // set the msg id
|
m->msgId = ps->nextNewMsgId; // set the msg id
|
||||||
ps->begMsg->link = m; // put the msg on the front of the outgoing queue
|
ps->begMsg->link = m; // put the msg on the front of the outgoing queue
|
||||||
ps->begMsg = m; //
|
ps->begMsg = m; //
|
||||||
|
Loading…
Reference in New Issue
Block a user