LNBuffer.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #include "stdafx.h"
  2. #include "LNBuffer.h"
  3. #include <Simplelog.h>
  4. #include <string>
  5. #include "LNContext.h"
  6. CLNBuffer::CLNBuffer()
  7. {
  8. }
  9. CLNBuffer::~CLNBuffer()
  10. {
  11. }
  12. int CLNBuffer::HasPack()
  13. {
  14. if (m_nPos < 4) return 0;
  15. int i, nStart = -1;
  16. //find pack head
  17. for (i = 0; i < m_nPos - 1; i++)
  18. {
  19. if (m_pBuffer[i] == '{')
  20. {
  21. nStart = i;
  22. break;
  23. }
  24. }
  25. if (nStart == -1)
  26. {
  27. CString imei;
  28. if (pContext) if (((CLNContext*)pContext)->m_mapImei.size()) imei = ((CLNContext*)pContext)->m_mapImei.begin()->first;
  29. CSimpleLog::Error(fmt::format("[设备]{}未找到7B丢弃数据{}:({}){}", imei, m_nPos,
  30. CString((char*)m_pBuffer, m_nPos), CSimpleLog::GetHexString(m_pBuffer, m_nPos)).c_str());
  31. m_nPos = 0;
  32. return 0;
  33. }
  34. else if (nStart > 0)
  35. {
  36. CString imei;
  37. if (pContext) if (((CLNContext*)pContext)->m_mapImei.size()) imei = ((CLNContext*)pContext)->m_mapImei.begin()->first;
  38. CSimpleLog::Error(fmt::format("[设备]{}找到7B丢弃7B之前的数据{}:({}){}", imei, nStart,
  39. CString((char*)m_pBuffer, nStart), CSimpleLog::GetHexString(m_pBuffer, nStart)).c_str());
  40. m_nPos -= nStart;
  41. memmove(m_pBuffer, m_pBuffer + nStart, m_nPos);
  42. nStart = 0;
  43. }
  44. int nlen = 0;
  45. //find pack tail
  46. for (i = 1; i < m_nPos; i++)
  47. {
  48. if (m_pBuffer[i] == '{')
  49. {
  50. CString imei;
  51. if (pContext) if (((CLNContext*)pContext)->m_mapImei.size()) imei = ((CLNContext*)pContext)->m_mapImei.begin()->first;
  52. CSimpleLog::Error(fmt::format("[设备]{}找7D丢弃7B之前的数据{}:({}){}", imei, i,
  53. CString((char*)m_pBuffer, i), CSimpleLog::GetHexString(m_pBuffer, i)).c_str());
  54. m_nPos -= i;
  55. memmove(m_pBuffer, m_pBuffer + i, m_nPos);
  56. nStart = 0;
  57. return 0;
  58. }
  59. if (m_pBuffer[i] == '}')
  60. {
  61. nlen = i + 1;
  62. return nlen;
  63. }
  64. }
  65. return nlen;
  66. }