packetize.cc 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #include "packetize.h"
  2. UnstructuredBuffer::UnstructuredBuffer()
  3. {
  4. }
  5. const void* UnstructuredBuffer::getBuffer()
  6. {
  7. return m_chars.data();
  8. }
  9. void UnstructuredBuffer::clear()
  10. {
  11. m_chars.erase();
  12. }
  13. int UnstructuredBuffer::size()
  14. {
  15. return m_chars.size();
  16. }
  17. // put buffer
  18. UnstructuredBuffer& UnstructuredBuffer::operator<<(std::pair<const void*, int> buffer)
  19. {
  20. const void *buff = buffer.first;
  21. int size = buffer.second;
  22. assert(size >= 0);
  23. put<UInt8>((UInt8*) buff, size);
  24. return *this;
  25. }
  26. // get buffer
  27. UnstructuredBuffer& UnstructuredBuffer::operator>>(std::pair<void*, int> buffer)
  28. {
  29. const void *buff = buffer.first;
  30. __attribute__((unused)) int size = buffer.second;
  31. assert(size >= 0);
  32. __attribute__((unused)) bool res = get<UInt8>((UInt8*) buff, size);
  33. assert(res == true);
  34. return *this;
  35. }
  36. #ifdef DEBUG_UNSTRUCTURED_BUFFER
  37. int main(int argc, char* argv[])
  38. {
  39. UnstructuredBuffer buff;
  40. UInt32 data1 = 1;
  41. UInt8 data2 = 'a';
  42. UInt32 data3 = 3;
  43. buff << data1 << data2 << data3;
  44. UInt32 data1prime;
  45. UInt8 data2prime;
  46. UInt32 data3prime;
  47. buff >> data1prime >> data2prime >> data3prime;
  48. cout << data1prime << " " << data2prime << " " << data3prime << endl;
  49. assert(data1 == data1prime);
  50. assert(data2 == data2prime);
  51. assert(data3 == data3prime);
  52. cout << "success: test 1" << endl;
  53. char data4[] = "hello world";
  54. char data4prime[] = "aaaaaaaaaaaa";
  55. buff << make_pair(data4, 12);
  56. buff >> make_pair(data4prime, 12);
  57. cout << data4prime << endl;
  58. assert(strcmp(data4prime, data4) == 0);
  59. cout << "success: test 2" << endl;
  60. int data5 = 42;
  61. buff << data5;
  62. int data5prime = -1;
  63. buff >> data5prime;
  64. cout << data5prime << endl;
  65. assert(data5 == data5prime);
  66. cout << "success: test 3" << endl;
  67. UInt64 data6 = 40;
  68. UInt64 data7 = 41;
  69. buff << data6 << data7;
  70. UInt64 data6prime = 0;
  71. UInt64 data7prime = 0;
  72. buff >> data6prime >> data7prime;
  73. cout << data6prime << " " << data7prime << endl;
  74. assert(data6 == data6prime);
  75. assert(data7 == data7prime);
  76. cout << "success: test 4" << endl;
  77. cout << "All tests passed" << endl;
  78. return 0;
  79. }
  80. #endif