LNBuffer.cpp 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include "stdafx.h"
  2. #include "LNBuffer.h"
  3. #include <string>
  4. CLNBuffer::CLNBuffer()
  5. {
  6. }
  7. CLNBuffer::~CLNBuffer()
  8. {
  9. }
  10. int CLNBuffer::HasPack()
  11. {
  12. if (m_nPos == 0) return 0;
  13. int i, nStart = -1;
  14. //find pack head
  15. for (i = 0; i < m_nPos - 1 && m_nPos > 4; i++)
  16. {
  17. if (m_pBuffer[i] == '{')
  18. {
  19. nStart = i;
  20. break;
  21. }
  22. }
  23. if (nStart == -1)
  24. {
  25. m_nPos = 0;
  26. return 0;
  27. }
  28. else if (nStart > 0)
  29. {
  30. m_nPos -= nStart;
  31. memmove(m_pBuffer, m_pBuffer + nStart, m_nPos);
  32. nStart = 0;
  33. }
  34. int nlen = 0;
  35. //find pack tail
  36. for (i = 1; i < m_nPos; i++)
  37. {
  38. if (m_pBuffer[i] == '{')
  39. {
  40. m_nPos -= i;
  41. memmove(m_pBuffer, m_pBuffer + i, m_nPos);
  42. nStart = 0;
  43. return nlen;
  44. }
  45. if (m_pBuffer[i] == '}')
  46. {
  47. nlen = i + 1;
  48. return nlen;
  49. }
  50. }
  51. return nlen;
  52. }