提交 6d8e4f50 编写于 作者: 丁劲犇's avatar 丁劲犇 😸

Performance improve

上级 a3285dca
......@@ -132,10 +132,14 @@ namespace ExampleServer{
//Heart Beating
if (m_currentHeader.Mark == 0xBEBE)
{
while (m_currentMessageSize< sizeof(EXAMPLE_HEARTBEATING) && blocklen>offset )
if (m_currentMessageSize< sizeof(EXAMPLE_HEARTBEATING) && blocklen>offset )
{
m_currentBlock.push_back(dataptr[offset++]);
m_currentMessageSize++;
int nCpy = offset - blocklen;
if (nCpy > sizeof(EXAMPLE_HEARTBEATING) - m_currentMessageSize)
nCpy = sizeof(EXAMPLE_HEARTBEATING) - m_currentMessageSize;
m_currentBlock.push_back(QByteArray(dataptr+offset,nCpy));
offset += nCpy;
m_currentMessageSize+=nCpy;
}
if (m_currentMessageSize < sizeof(EXAMPLE_HEARTBEATING)) //Header not completed.
continue;
......@@ -162,10 +166,14 @@ namespace ExampleServer{
else if (m_currentHeader.Mark == 0x55AA)
//Trans Message
{
while (m_currentMessageSize< sizeof(EXAMPLE_TRANS_MSG)-1 && blocklen>offset)
if (m_currentMessageSize< sizeof(EXAMPLE_TRANS_MSG)-1 && blocklen>offset)
{
m_currentBlock.push_back(dataptr[offset++]);
m_currentMessageSize++;
int nCpy = blocklen - offset;
if (nCpy > sizeof(EXAMPLE_TRANS_MSG)-1 - m_currentMessageSize)
nCpy = sizeof(EXAMPLE_TRANS_MSG)-1 - m_currentMessageSize;
m_currentBlock.push_back(QByteArray(dataptr+offset,nCpy));
offset += nCpy;
m_currentMessageSize+=nCpy;
}
if (m_currentMessageSize < sizeof(EXAMPLE_TRANS_MSG)-1) //Header not completed.
continue;
......@@ -179,11 +187,15 @@ namespace ExampleServer{
{
qint32 bitLeft = m_currentHeader.data_length + sizeof(EXAMPLE_TRANS_MSG) - 1
-m_currentMessageSize ;
while (bitLeft>0 && blocklen>offset)
if (bitLeft>0 && blocklen>offset)
{
m_currentBlock.push_back(dataptr[offset++]);
m_currentMessageSize++;
bitLeft--;
int nCpy = blocklen - offset;
if (nCpy > bitLeft)
nCpy = bitLeft;
m_currentBlock.push_back(QByteArray(dataptr+offset,nCpy));
offset += nCpy;
m_currentMessageSize+=nCpy;
bitLeft -= nCpy;
}
//deal block, may be send data as soon as possible;
deal_current_message_block();
......@@ -201,11 +213,15 @@ namespace ExampleServer{
{
qint32 bitLeft = m_currentHeader.data_length + sizeof(EXAMPLE_TRANS_MSG) - 1
-m_currentMessageSize ;
while (bitLeft>0 && blocklen>offset)
if (bitLeft>0 && blocklen>offset)
{
m_currentBlock.push_back(dataptr[offset++]);
m_currentMessageSize++;
bitLeft--;
int nCpy = blocklen - offset;
if (nCpy > bitLeft)
nCpy = bitLeft;
m_currentBlock.push_back(QByteArray(dataptr+offset,nCpy));
offset += nCpy;
m_currentMessageSize+=nCpy;
bitLeft -= nCpy;
}
//deal block, may be processed as soon as possible;
deal_current_message_block();
......
......@@ -22,11 +22,21 @@ namespace ExampleServer{
int nOffset = 0;
while (nOffset < nBlockSize )
{
while (m_currStMegSize < sizeof(EXAMPLE_CROSSSVR_MSG::tag_msgHearder) && nOffset< nBlockSize)
//while (m_currStMegSize < sizeof(EXAMPLE_CROSSSVR_MSG::tag_msgHearder) && nOffset< nBlockSize)
//{
// m_currStBlock.push_back(pData[nOffset++]);
// ++m_currStMegSize;
//}
if(m_currStMegSize < sizeof(EXAMPLE_CROSSSVR_MSG::tag_msgHearder) && nOffset< nBlockSize)
{
m_currStBlock.push_back(pData[nOffset++]);
++m_currStMegSize;
int nHeaderReadLen = nBlockSize - nOffset;
if (nHeaderReadLen > sizeof(EXAMPLE_CROSSSVR_MSG::tag_msgHearder) - m_currStMegSize )
nHeaderReadLen = sizeof(EXAMPLE_CROSSSVR_MSG::tag_msgHearder) - m_currStMegSize ;
m_currStBlock.push_back(QByteArray(pData + nOffset,nHeaderReadLen));
nOffset += nHeaderReadLen;
m_currStMegSize += nHeaderReadLen;
}
if (m_currStMegSize < sizeof(EXAMPLE_CROSSSVR_MSG::tag_msgHearder))
return true;
if (m_currStMegSize == sizeof(EXAMPLE_CROSSSVR_MSG::tag_msgHearder))
......@@ -39,10 +49,19 @@ namespace ExampleServer{
return true;
}
}
while (nOffset<nBlockSize && m_currStMegSize < m_st_Header.messageLen + sizeof(EXAMPLE_CROSSSVR_MSG::tag_msgHearder) )
//while (nOffset<nBlockSize && m_currStMegSize < m_st_Header.messageLen + sizeof(EXAMPLE_CROSSSVR_MSG::tag_msgHearder) )
//{
// m_currStBlock.push_back(pData[nOffset++]);
// ++m_currStMegSize;
//}
if (nOffset<nBlockSize && m_currStMegSize < m_st_Header.messageLen + sizeof(EXAMPLE_CROSSSVR_MSG::tag_msgHearder) )
{
m_currStBlock.push_back(pData[nOffset++]);
++m_currStMegSize;
int nHeaderReadLen = nBlockSize - nOffset;
if (nHeaderReadLen > m_st_Header.messageLen + sizeof(EXAMPLE_CROSSSVR_MSG::tag_msgHearder) - m_currStMegSize )
nHeaderReadLen = m_st_Header.messageLen + sizeof(EXAMPLE_CROSSSVR_MSG::tag_msgHearder) - m_currStMegSize ;
m_currStBlock.push_back(QByteArray(pData + nOffset,nHeaderReadLen));
nOffset += nHeaderReadLen;
m_currStMegSize += nHeaderReadLen;
}
bool needDel = deal_msg();
if (st_bytesLeft()==0 || needDel==true)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册