| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | #include "stdafx.h"#include "LNBuffer.h"#include <Simplelog.h>#include <string>#include "LNContext.h"CLNBuffer::CLNBuffer(){}CLNBuffer::~CLNBuffer(){}int CLNBuffer::HasPack(){    if (m_nPos < 4) return 0;    int i, nStart = -1;    //find pack head    for (i = 0; i < m_nPos - 1; i++)    {        if (m_pBuffer[i] == '{')        {            nStart = i;            break;        }    }    if (nStart == -1)    {        CString imei;        if (pContext) if (((CLNContext*)pContext)->m_mapImei.size()) imei = ((CLNContext*)pContext)->m_mapImei.begin()->first;        CSimpleLog::Error(fmt::format("[设备]{}未找到7B丢弃数据{}:({}){}", imei, m_nPos,            CSimpleLog::GetHexString(m_pBuffer, m_nPos), CString((char*)m_pBuffer, m_nPos)).c_str());        m_nPos = 0;        return 0;    }    else if (nStart > 0)    {		CString imei;		if (pContext) if (((CLNContext*)pContext)->m_mapImei.size()) imei = ((CLNContext*)pContext)->m_mapImei.begin()->first;		CSimpleLog::Error(fmt::format("[设备]{}找到7B丢弃7B之前的数据{}:({}){}", imei, nStart,			CSimpleLog::GetHexString(m_pBuffer, nStart), CString((char*)m_pBuffer, nStart)).c_str());        m_nPos -= nStart;        memmove(m_pBuffer, m_pBuffer + nStart, m_nPos);        nStart = 0;    }    int nlen = 0;    //find pack tail    for (i = 1; i < m_nPos; i++)    {        if (m_pBuffer[i] == '{')        {			CString imei;			if (pContext) if (((CLNContext*)pContext)->m_mapImei.size()) imei = ((CLNContext*)pContext)->m_mapImei.begin()->first;			CSimpleLog::Error(fmt::format("[设备]{}找7D丢弃7B之前的数据{}:({}){}", imei, i,				CSimpleLog::GetHexString(m_pBuffer, i), CString((char*)m_pBuffer, i)).c_str());            m_nPos -= i;            memmove(m_pBuffer, m_pBuffer + i, m_nPos);            nStart = 0;            return 0;        }        if (m_pBuffer[i] == '}')        {            nlen = i + 1;            return nlen;        }    }    return nlen;}
 |