binary_buf.puml 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. @startuml
  2. skinparam classAttributeIconSize 0
  3. title binary_buf是二进制缓存
  4. note left of Binary_buf
  5. /*
  6. * binary_buf是二进制缓存
  7. * 这里用字符串,来存储雷达的通信消息的原始数据
  8. * Binary_buf 的内容格式:消息类型 + 消息数据
  9. *
  10. * 例如思科的雷达的消息类型
  11. * ready->ready->start->data->data->data->stop->ready->ready
  12. *
  13. * 提供了 is_equal 系列的函数,来进行判断前面的消息类型
  14. *
  15. * 注意了:m_buf是中间可以允许有‘\0’的,不是单纯的字符串格式
  16. * 末尾也不一定是‘\0’
  17. */
  18. end note
  19. enum Buf_type
  20. {
  21. //雷达消息的类型
  22. //在通信消息的前面一部分字符串,表示这条消息的类型。
  23. //在解析消息的时候,先解析前面的消息类型,来判断这条消息的功用
  24. //默认值 BUF_UNKNOW = 0
  25. BUF_UNKNOW =0, //未知消息
  26. BUF_READY =1, //待机消息
  27. BUF_START =2, //开始消息
  28. BUF_DATA =3, //数据消息
  29. BUF_STOP =4, //结束消息
  30. BUF_ERROR =5, //错误消息
  31. }
  32. class Binary_buf
  33. {
  34. //二进制缓存,
  35. ==public:==
  36. Binary_buf();
  37. Binary_buf(const Binary_buf& other);
  38. ~Binary_buf();
  39. ..
  40. //使用参数构造,深拷贝,len为0时,使用strlen(buf),不存储结束符'\0'
  41. Binary_buf(const char* p_buf, int len = 0);
  42. //重载=,深拷贝,
  43. Binary_buf& operator=(const Binary_buf& other);
  44. //重载=,深拷贝,使用strlen(buf),不存储结束符'\0'
  45. Binary_buf& operator=(const char* p_buf);
  46. //重载+,other追加在this的后面,
  47. Binary_buf& operator+(Binary_buf& other);
  48. //重载+,追加在this的后面,使用strlen(buf),不存储结束符'\0'
  49. Binary_buf& operator+(const char* p_buf);
  50. //重载[],允许直接使用数组的形式,直接访问buf的内存。注意,n值必须在0~m_length之间,
  51. char& operator[](int n);
  52. ..
  53. //判空
  54. bool is_empty();
  55. //清空
  56. void clear();
  57. ..
  58. //比较前面部分的buf是否相等,使用 other.m_length 为标准
  59. bool is_equal_front(const Binary_buf& other);
  60. //比较前面部分的buf是否相等,len为0时,使用strlen(buf)为标准,不比较结束符'\0'
  61. bool is_equal_front(const char* p_buf, int len = 0);
  62. //比较的buf是否全部相等,
  63. bool is_equal_all(const Binary_buf& other);
  64. //比较的buf是否全部相等,不比较结束符'\0'
  65. bool is_equal_all(const char* p_buf);
  66. ==public:==
  67. char* get_buf()const;
  68. int get_length()const;
  69. ==protected:==
  70. char* mp_buf; //二进制缓存指针
  71. int m_length; //二进制缓存长度
  72. ==private:==
  73. }
  74. @enduml