protocol_def.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  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. Favorite = 6, // 收藏夹
  12. };
  13. enum class Cmd : uint16_t {
  14. Heartbeat = 1,
  15. Login = 2,
  16. Logout = 3,
  17. Chat = 4,
  18. Register = 5,
  19. SendCode = 6,
  20. ResetPassword = 7,
  21. ChangePassword = 8,
  22. FriendList = 9,
  23. ConvList = 10,
  24. MsgHistory = 11,
  25. AddFriend = 12,
  26. SetConfig = 13,
  27. SearchUser = 14,
  28. FriendRequestList = 15,
  29. HandleFriendRequest = 16,
  30. GetPrivacy = 17,
  31. SetPrivacy = 18,
  32. StickerPackList = 19,
  33. StickerPack = 20,
  34. GetSticker = 21,
  35. DeleteConv = 22,
  36. SetUnread = 23,
  37. DeleteFriend = 24,
  38. SetRemark = 25,
  39. GetProfile = 26,
  40. SetProfile = 27,
  41. GetAvatar = 28,
  42. PutFile = 29,
  43. GetFile = 30,
  44. FavoriteAdd = 31,
  45. FavoriteList = 32,
  46. FavoriteGet = 33,
  47. FavoriteUpdate = 34,
  48. FavoriteDelete = 35,
  49. DeleteMsg = 36,
  50. ChatNotify = 100,
  51. Kicked = 101,
  52. FriendRequestNotify = 102,
  53. FriendAcceptedNotify = 103,
  54. };
  55. namespace Err {
  56. constexpr int Ok = 0;
  57. constexpr int BadParam = 1;
  58. constexpr int NotLogin = 2;
  59. constexpr int AuthFail = 3;
  60. constexpr int NotFound = 4;
  61. constexpr int Exists = 5;
  62. constexpr int PhoneExists = 6;
  63. constexpr int BadSms = 7;
  64. constexpr int WeakPass = 8;
  65. constexpr int Forbidden = 9;
  66. constexpr int DbError = 10;
  67. constexpr int BadAccount = 11;
  68. constexpr int RateLimit = 12;
  69. constexpr int Disabled = 13;
  70. } // namespace Err
  71. namespace MsgType {
  72. constexpr int Text = 1;
  73. constexpr int Sticker = 2;
  74. constexpr int File = 3;
  75. constexpr int Card = 4;
  76. }
  77. namespace FavKind {
  78. constexpr int Text = 1;
  79. constexpr int Image = 2;
  80. constexpr int File = 3;
  81. constexpr int Card = 4;
  82. constexpr int Note = 5;
  83. }
  84. namespace FriendRel {
  85. constexpr int None = 0; // 非好友
  86. constexpr int Pending = 1; // 已发出申请,待对方同意
  87. constexpr int Friend = 2; // 已是好友
  88. constexpr int Incoming = 3; // 对方已申请加我
  89. }
  90. constexpr uint32_t kHeaderSize = 12;
  91. constexpr int64_t kFileHelperUid = 1;
  92. inline const char* type_name(uint16_t type)
  93. {
  94. switch (static_cast<Type>(type)) {
  95. case Type::System: return "System";
  96. case Type::Account: return "Account";
  97. case Type::Friend: return "Friend";
  98. case Type::Message: return "Message";
  99. case Type::Sticker: return "Sticker";
  100. case Type::Favorite: return "Favorite";
  101. }
  102. return "?";
  103. }
  104. inline const char* cmd_name(uint16_t cmd)
  105. {
  106. switch (static_cast<Cmd>(cmd)) {
  107. case Cmd::Heartbeat: return "Heartbeat";
  108. case Cmd::Login: return "Login";
  109. case Cmd::Logout: return "Logout";
  110. case Cmd::Chat: return "Chat";
  111. case Cmd::Register: return "Register";
  112. case Cmd::SendCode: return "SendCode";
  113. case Cmd::ResetPassword: return "ResetPassword";
  114. case Cmd::ChangePassword: return "ChangePassword";
  115. case Cmd::FriendList: return "FriendList";
  116. case Cmd::ConvList: return "ConvList";
  117. case Cmd::MsgHistory: return "MsgHistory";
  118. case Cmd::AddFriend: return "AddFriend";
  119. case Cmd::SetConfig: return "SetConfig";
  120. case Cmd::SearchUser: return "SearchUser";
  121. case Cmd::FriendRequestList: return "FriendRequestList";
  122. case Cmd::HandleFriendRequest: return "HandleFriendRequest";
  123. case Cmd::GetPrivacy: return "GetPrivacy";
  124. case Cmd::SetPrivacy: return "SetPrivacy";
  125. case Cmd::StickerPackList: return "StickerPackList";
  126. case Cmd::StickerPack: return "StickerPack";
  127. case Cmd::GetSticker: return "GetSticker";
  128. case Cmd::DeleteConv: return "DeleteConv";
  129. case Cmd::SetUnread: return "SetUnread";
  130. case Cmd::DeleteFriend: return "DeleteFriend";
  131. case Cmd::SetRemark: return "SetRemark";
  132. case Cmd::GetProfile: return "GetProfile";
  133. case Cmd::SetProfile: return "SetProfile";
  134. case Cmd::GetAvatar: return "GetAvatar";
  135. case Cmd::PutFile: return "PutFile";
  136. case Cmd::GetFile: return "GetFile";
  137. case Cmd::FavoriteAdd: return "FavoriteAdd";
  138. case Cmd::FavoriteList: return "FavoriteList";
  139. case Cmd::FavoriteGet: return "FavoriteGet";
  140. case Cmd::FavoriteUpdate: return "FavoriteUpdate";
  141. case Cmd::FavoriteDelete: return "FavoriteDelete";
  142. case Cmd::DeleteMsg: return "DeleteMsg";
  143. case Cmd::ChatNotify: return "ChatNotify";
  144. case Cmd::Kicked: return "Kicked";
  145. case Cmd::FriendRequestNotify: return "FriendRequestNotify";
  146. case Cmd::FriendAcceptedNotify: return "FriendAcceptedNotify";
  147. }
  148. return "?";
  149. }
  150. } // namespace im