protocol_def.h 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. #pragma once
  2. #include <cstdint>
  3. namespace im {
  4. // Client / Server 共用的协议常量。编解码、JSON、网络实现仍各放各工程。
  5. enum class Type : uint16_t {
  6. System = 1, // 心跳、被踢等
  7. Account = 2, // 登录/注册/密码/隐私
  8. Friend = 3, // 好友
  9. Message = 4, // 会话与聊天
  10. Sticker = 5, // 表情包
  11. };
  12. enum class Cmd : uint16_t {
  13. Heartbeat = 1,
  14. Login = 2,
  15. Logout = 3,
  16. Chat = 4,
  17. Register = 5,
  18. SendCode = 6,
  19. ResetPassword = 7,
  20. ChangePassword = 8,
  21. FriendList = 9,
  22. ConvList = 10,
  23. MsgHistory = 11,
  24. AddFriend = 12,
  25. SetLang = 13,
  26. SearchUser = 14,
  27. FriendRequestList = 15,
  28. HandleFriendRequest = 16,
  29. GetPrivacy = 17,
  30. SetPrivacy = 18,
  31. StickerPackList = 19,
  32. StickerPack = 20,
  33. GetSticker = 21,
  34. DeleteConv = 22,
  35. SetUnread = 23,
  36. DeleteFriend = 24,
  37. SetRemark = 25,
  38. GetProfile = 26,
  39. SetProfile = 27,
  40. GetAvatar = 28,
  41. PutFile = 29,
  42. GetFile = 30,
  43. ChatNotify = 100,
  44. Kicked = 101,
  45. FriendRequestNotify = 102,
  46. FriendAcceptedNotify = 103,
  47. };
  48. namespace Err {
  49. constexpr int Ok = 0;
  50. constexpr int BadParam = 1;
  51. constexpr int NotLogin = 2;
  52. constexpr int AuthFail = 3;
  53. constexpr int NotFound = 4;
  54. constexpr int Exists = 5;
  55. constexpr int PhoneExists = 6;
  56. constexpr int BadSms = 7;
  57. constexpr int WeakPass = 8;
  58. constexpr int Forbidden = 9;
  59. constexpr int DbError = 10;
  60. constexpr int BadAccount = 11;
  61. constexpr int RateLimit = 12;
  62. constexpr int Disabled = 13;
  63. } // namespace Err
  64. namespace MsgType {
  65. constexpr int Text = 1;
  66. constexpr int Sticker = 2;
  67. constexpr int File = 3;
  68. constexpr int Card = 4;
  69. }
  70. namespace FriendRel {
  71. constexpr int None = 0; // 非好友
  72. constexpr int Pending = 1; // 已发出申请,待对方同意
  73. constexpr int Friend = 2; // 已是好友
  74. constexpr int Incoming = 3; // 对方已申请加我
  75. }
  76. constexpr uint32_t kHeaderSize = 12;
  77. constexpr int64_t kFileHelperUid = 1;
  78. inline const char* type_name(uint16_t type)
  79. {
  80. switch (static_cast<Type>(type)) {
  81. case Type::System: return "System";
  82. case Type::Account: return "Account";
  83. case Type::Friend: return "Friend";
  84. case Type::Message: return "Message";
  85. case Type::Sticker: return "Sticker";
  86. }
  87. return "?";
  88. }
  89. inline const char* cmd_name(uint16_t cmd)
  90. {
  91. switch (static_cast<Cmd>(cmd)) {
  92. case Cmd::Heartbeat: return "Heartbeat";
  93. case Cmd::Login: return "Login";
  94. case Cmd::Logout: return "Logout";
  95. case Cmd::Chat: return "Chat";
  96. case Cmd::Register: return "Register";
  97. case Cmd::SendCode: return "SendCode";
  98. case Cmd::ResetPassword: return "ResetPassword";
  99. case Cmd::ChangePassword: return "ChangePassword";
  100. case Cmd::FriendList: return "FriendList";
  101. case Cmd::ConvList: return "ConvList";
  102. case Cmd::MsgHistory: return "MsgHistory";
  103. case Cmd::AddFriend: return "AddFriend";
  104. case Cmd::SetLang: return "SetLang";
  105. case Cmd::SearchUser: return "SearchUser";
  106. case Cmd::FriendRequestList: return "FriendRequestList";
  107. case Cmd::HandleFriendRequest: return "HandleFriendRequest";
  108. case Cmd::GetPrivacy: return "GetPrivacy";
  109. case Cmd::SetPrivacy: return "SetPrivacy";
  110. case Cmd::StickerPackList: return "StickerPackList";
  111. case Cmd::StickerPack: return "StickerPack";
  112. case Cmd::GetSticker: return "GetSticker";
  113. case Cmd::DeleteConv: return "DeleteConv";
  114. case Cmd::SetUnread: return "SetUnread";
  115. case Cmd::DeleteFriend: return "DeleteFriend";
  116. case Cmd::SetRemark: return "SetRemark";
  117. case Cmd::GetProfile: return "GetProfile";
  118. case Cmd::SetProfile: return "SetProfile";
  119. case Cmd::GetAvatar: return "GetAvatar";
  120. case Cmd::PutFile: return "PutFile";
  121. case Cmd::GetFile: return "GetFile";
  122. case Cmd::ChatNotify: return "ChatNotify";
  123. case Cmd::Kicked: return "Kicked";
  124. case Cmd::FriendRequestNotify: return "FriendRequestNotify";
  125. case Cmd::FriendAcceptedNotify: return "FriendAcceptedNotify";
  126. }
  127. return "?";
  128. }
  129. } // namespace im