| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- #pragma once
- #include <cstdint>
- namespace im {
- // Client / Server 共用的协议常量。编解码、JSON、网络实现仍各放各工程。
- enum class Type : uint16_t {
- System = 1, // 心跳、被踢等
- Account = 2, // 登录/注册/密码/隐私
- Friend = 3, // 好友
- Message = 4, // 会话与聊天
- Sticker = 5, // 表情包
- Favorite = 6, // 收藏夹
- Group = 7, // 群聊
- };
- enum class Cmd : uint16_t {
- Heartbeat = 1,
- Login = 2,
- Logout = 3,
- Chat = 4,
- Register = 5,
- SendCode = 6,
- ResetPassword = 7,
- ChangePassword = 8,
- FriendList = 9,
- ConvList = 10,
- MsgHistory = 11,
- AddFriend = 12,
- SetConfig = 13,
- SearchUser = 14,
- FriendRequestList = 15,
- HandleFriendRequest = 16,
- GetPrivacy = 17,
- SetPrivacy = 18,
- StickerPackList = 19,
- StickerPack = 20,
- GetSticker = 21,
- DeleteConv = 22,
- SetUnread = 23,
- DeleteFriend = 24,
- SetRemark = 25,
- GetProfile = 26,
- SetProfile = 27,
- GetAvatar = 28,
- PutFile = 29,
- GetFile = 30,
- FavoriteAdd = 31,
- FavoriteList = 32,
- FavoriteGet = 33,
- FavoriteUpdate = 34,
- FavoriteDelete = 35,
- DeleteMsg = 36,
- GroupCreate = 37,
- GroupInfo = 38,
- GroupMembers = 39,
- GroupUpdate = 40,
- GroupInvite = 41,
- GroupSearch = 42,
- GroupJoin = 43,
- GroupLeave = 44,
- GroupDismiss = 45,
- GroupKick = 46,
- GroupSetAdmin = 47,
- GroupTransfer = 48,
- GroupRequestList = 49,
- GroupHandleRequest = 50,
- GroupList = 51,
- ChatNotify = 100,
- Kicked = 101,
- FriendRequestNotify = 102,
- FriendAcceptedNotify = 103,
- PresenceNotify = 104,
- GroupRequestNotify = 105,
- GroupChangeNotify = 106,
- };
- namespace Err {
- constexpr int Ok = 0;
- constexpr int BadParam = 1;
- constexpr int NotLogin = 2;
- constexpr int AuthFail = 3;
- constexpr int NotFound = 4;
- constexpr int Exists = 5;
- constexpr int PhoneExists = 6;
- constexpr int BadSms = 7;
- constexpr int WeakPass = 8;
- constexpr int Forbidden = 9;
- constexpr int DbError = 10;
- constexpr int BadAccount = 11;
- constexpr int RateLimit = 12;
- constexpr int Disabled = 13;
- } // namespace Err
- namespace MsgType {
- constexpr int Text = 1;
- constexpr int Sticker = 2;
- constexpr int File = 3;
- constexpr int Card = 4;
- constexpr int Sys = 5;
- }
- namespace FavKind {
- constexpr int Text = 1;
- constexpr int Image = 2;
- constexpr int File = 3;
- constexpr int Card = 4;
- constexpr int Note = 5;
- }
- namespace FriendRel {
- constexpr int None = 0; // 非好友
- constexpr int Pending = 1; // 已发出申请,待对方同意
- constexpr int Friend = 2; // 已是好友
- constexpr int Incoming = 3; // 对方已申请加我
- }
- namespace ConvType {
- constexpr int Direct = 0;
- constexpr int Group = 1;
- }
- namespace GroupRole {
- constexpr int Member = 0;
- constexpr int Admin = 1;
- constexpr int Owner = 2;
- }
- namespace JoinMode {
- constexpr int Open = 0; // 无需审核
- constexpr int Approve = 1; // 群主或管理员审核
- constexpr int Closed = 2; // 外人不可申请
- }
- constexpr uint32_t kHeaderSize = 12;
- constexpr int64_t kFileHelperUid = 1;
- inline const char* type_name(uint16_t type)
- {
- switch (static_cast<Type>(type)) {
- case Type::System: return "System";
- case Type::Account: return "Account";
- case Type::Friend: return "Friend";
- case Type::Message: return "Message";
- case Type::Sticker: return "Sticker";
- case Type::Favorite: return "Favorite";
- case Type::Group: return "Group";
- }
- return "?";
- }
- inline const char* cmd_name(uint16_t cmd)
- {
- switch (static_cast<Cmd>(cmd)) {
- case Cmd::Heartbeat: return "Heartbeat";
- case Cmd::Login: return "Login";
- case Cmd::Logout: return "Logout";
- case Cmd::Chat: return "Chat";
- case Cmd::Register: return "Register";
- case Cmd::SendCode: return "SendCode";
- case Cmd::ResetPassword: return "ResetPassword";
- case Cmd::ChangePassword: return "ChangePassword";
- case Cmd::FriendList: return "FriendList";
- case Cmd::ConvList: return "ConvList";
- case Cmd::MsgHistory: return "MsgHistory";
- case Cmd::AddFriend: return "AddFriend";
- case Cmd::SetConfig: return "SetConfig";
- case Cmd::SearchUser: return "SearchUser";
- case Cmd::FriendRequestList: return "FriendRequestList";
- case Cmd::HandleFriendRequest: return "HandleFriendRequest";
- case Cmd::GetPrivacy: return "GetPrivacy";
- case Cmd::SetPrivacy: return "SetPrivacy";
- case Cmd::StickerPackList: return "StickerPackList";
- case Cmd::StickerPack: return "StickerPack";
- case Cmd::GetSticker: return "GetSticker";
- case Cmd::DeleteConv: return "DeleteConv";
- case Cmd::SetUnread: return "SetUnread";
- case Cmd::DeleteFriend: return "DeleteFriend";
- case Cmd::SetRemark: return "SetRemark";
- case Cmd::GetProfile: return "GetProfile";
- case Cmd::SetProfile: return "SetProfile";
- case Cmd::GetAvatar: return "GetAvatar";
- case Cmd::PutFile: return "PutFile";
- case Cmd::GetFile: return "GetFile";
- case Cmd::FavoriteAdd: return "FavoriteAdd";
- case Cmd::FavoriteList: return "FavoriteList";
- case Cmd::FavoriteGet: return "FavoriteGet";
- case Cmd::FavoriteUpdate: return "FavoriteUpdate";
- case Cmd::FavoriteDelete: return "FavoriteDelete";
- case Cmd::DeleteMsg: return "DeleteMsg";
- case Cmd::GroupCreate: return "GroupCreate";
- case Cmd::GroupInfo: return "GroupInfo";
- case Cmd::GroupMembers: return "GroupMembers";
- case Cmd::GroupUpdate: return "GroupUpdate";
- case Cmd::GroupInvite: return "GroupInvite";
- case Cmd::GroupSearch: return "GroupSearch";
- case Cmd::GroupJoin: return "GroupJoin";
- case Cmd::GroupLeave: return "GroupLeave";
- case Cmd::GroupDismiss: return "GroupDismiss";
- case Cmd::GroupKick: return "GroupKick";
- case Cmd::GroupSetAdmin: return "GroupSetAdmin";
- case Cmd::GroupTransfer: return "GroupTransfer";
- case Cmd::GroupRequestList: return "GroupRequestList";
- case Cmd::GroupHandleRequest: return "GroupHandleRequest";
- case Cmd::GroupList: return "GroupList";
- case Cmd::ChatNotify: return "ChatNotify";
- case Cmd::Kicked: return "Kicked";
- case Cmd::FriendRequestNotify: return "FriendRequestNotify";
- case Cmd::FriendAcceptedNotify: return "FriendAcceptedNotify";
- case Cmd::PresenceNotify: return "PresenceNotify";
- case Cmd::GroupRequestNotify: return "GroupRequestNotify";
- case Cmd::GroupChangeNotify: return "GroupChangeNotify";
- }
- return "?";
- }
- } // namespace im
|