响应返回的包 缺值已修改

This commit is contained in:
dongl 2023-05-17 09:21:29 +08:00
parent 431416c072
commit c4a100745d
11 changed files with 84 additions and 21 deletions

View File

@ -10,14 +10,19 @@
// 定义一个宏来包含需要用到的枚举值
#define MY_ENUM_VALUES \
X(MP_REQUEST_LOGIN) \
X(MP_REQUEST_LOGOUT) \
X(MP_REQUEST_REGISTER) \
X(MP_RESPONSE_LOGIN) \
X(MP_RESPONSE_LOGOUT) \
X(MP_RESPONSE_REGISTER)
X(MP_REQUEST_CODE) \
X(MP_REQUEST_FRIENDS) \
X(MP_REQUEST_GROUPS)
#if 0
// method 1

View File

@ -9,6 +9,16 @@ Response::Response(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, const std::string
Sri(subType, username, msg, token) {
}
Response::Response(mp::MP_TYPE type, mp::MP_SUB_TYPE subType,
uint64_t account, const std::string &username,
const std::string &email, uint64_t phone,
const std::string &msg, const std::string &token,
const std::string & data) :
Mph(type),
Sri(subType, account, username, email, phone, msg, token, data) {
}
Response::~Response() {
delete response;
}

View File

@ -15,6 +15,11 @@
class Response : public Mph, Sri{
public:
Response(mp::MP_TYPE type, mp::MP_SUB_TYPE subType, const std::string &username, const std::string &msg, const std::string &token);
Response(mp::MP_TYPE type, mp::MP_SUB_TYPE subType,
uint64_t account, const std::string &username,
const std::string &email, uint64_t phone,
const std::string &msg, const std::string &token,
const std::string & data);
~Response() override;

View File

@ -10,14 +10,31 @@
class Sri {
public:
Sri(mp::MP_SUB_TYPE code, const std::string& username, const std::string& msg, const std::string& token) {
Sri(mp::MP_SUB_TYPE subType, const std::string& username, const std::string& msg, const std::string& token) {
sri = new mp::sri();
sri->set_subcommand(code);
sri->set_subcommand(subType);
sri->set_msg(msg);
sri->set_token(token);
sri->set_username(username);
}
Sri(mp::MP_SUB_TYPE subType,
uint64_t account, const std::string &username,
const std::string &email, uint64_t phone,
const std::string &msg, const std::string &token,
const std::string & data) {
sri = new mp::sri();
sri->set_subcommand(subType);
sri->set_account(account);
sri->set_username(username);
sri->set_email(email);
sri->set_phone(phone);
sri->set_msg(msg);
sri->set_token(token);
sri->set_data(data);
}
Sri() {}
virtual ~Sri() {

View File

@ -8,7 +8,7 @@ enum MP_TYPE {
MP_REQUEST_REGISTER = 2; //
MP_REQUEST_CODE = 3; //
MP_REQUEST_FRIENDS = 4; //
MP_REQUEST_GROUPS = 5; //
MP_REQUEST_GROUPS = 5; //
// 20 - 39

View File

@ -22,11 +22,19 @@ agreement_response::~agreement_response() {}
void agreement_response::set(mp::sri* sri, bufferevent* bev) {
auto resp = std::make_shared<mp::response>(mp::response());
std::cout << "set" << sri->account() << std::endl;
m_sri = resp->sri();
m_sri.set_subcommand(sri->subcommand());
m_sri.set_account(sri->account());
m_sri.set_username(sri->username());
m_sri.set_msg(sri->msg());
m_sri.set_subcommand(sri->subcommand());
m_sri.set_token(sri->token());
m_sri.set_data(sri->data());
m_sri.set_email(sri->email());
m_sri.set_phone(sri->phone());
std::cout << "set" << m_sri.account() << std::endl;
m_bev = bev;
}

View File

@ -16,9 +16,17 @@ void handler::resp(const std::shared_ptr<agreement_request>& request,
// 例如 login包类型为 request login==0 那么响应这个登陆信息就是 response login==0+20
// 200 以上 为im msg 通讯的包类型序号
if (request->m_mph->mp_type() < 200) {
// auto resp = new Response((mp::MP_TYPE) (request->m_mph->mp_type() + 20),
// response->m_sri.subcommand(), response->m_sri.username(),
// response->m_sri.msg(), response->m_sri.token());
auto resp = new Response((mp::MP_TYPE) (request->m_mph->mp_type() + 20),
response->m_sri.subcommand(), response->m_sri.username(),
response->m_sri.msg(), response->m_sri.token());
response->m_sri.subcommand(),
response->m_sri.account(), response->m_sri.username(),
response->m_sri.email(), response->m_sri.phone(),
response->m_sri.msg(), response->m_sri.token(),
response->m_sri.data());
auto ret = resp->packet();
bufferevent_write(request->m_bev, ret.c_str(), ret.size());

View File

@ -9,6 +9,7 @@ void UserProveController::run(std::shared_ptr<agreement_request> request, std::s
if (request->m_mph->mp_type() == mp::MP_REQUEST_LOGIN) {
auto sri = service.login(request->m_body.subcommand(),
request->m_body.account(), request->m_body.password());
response->set(sri, request->m_bev);
// 登陆的用户 直接在全局 注册 在map中 直接存入服务器内存

View File

@ -26,9 +26,13 @@ protected:
protected:
virtual void sri_clear(){
sri->clear_subcommand();
sri->clear_msg();
sri->clear_token();
sri->clear_account();
sri->clear_username();
sri->clear_email();
sri->clear_phone();
sri->clear_token();
sri->clear_msg();
sri->clear_data();
}
};

View File

@ -9,11 +9,12 @@ UserFriendsService::~UserFriendsService() {}
// 好友群组 添加删除 任务组 决策接口
mp::sri *UserFriendsService::friendImProve(mp::body* body) {
sri_clear();
if (body->target() == 0 || body->source() == 0) {
printf("请求数据有缺\n");
sri->set_msg("请求数据有缺");
return sri;
}
// if (body->target() == 0 || body->source() == 0) {
// printf("请求数据有缺\n");
// sri->set_subcommand(mp::MP_SUB_TYPE::MP_GET_FAIL);
// sri->set_msg("请求数据有缺");
// return sri;
// }
auto subcommand = body->subcommand();
@ -29,6 +30,11 @@ mp::sri *UserFriendsService::friendImProve(mp::body* body) {
else if (subcommand == mp::MP_SUB_TYPE::MP_REMOVE_FRIEND) {
}
// 获取好友列表
else if (subcommand == mp::MP_SUB_TYPE::MP_GET_FRIENDS) {
// 此时包传来的 是 客户端 取到用户的帐号
FetchUserFriends(strtol(body->account().c_str(), nullptr, 0), body->data());
}
return sri;
}
@ -72,18 +78,17 @@ mp::sri* UserFriendsService::add_contact_person(mp::body *body) {
return sri;
}
mp::sri *UserFriendsService::FetchUserFriend(uint64_t account, const std::string &data) {
void UserFriendsService::FetchUserFriends(uint64_t account, const std::string &data) {
sri_clear();
uint8_t page_begin = data.c_str()[0];
uint8_t page_end = data.c_str()[1];
auto friends = userFriendsDb.select_friends_all(account);
if (friends.has_value())
if (friends.has_value()) {
sri->set_data(friends.value());
sri->set_msg("好友获取成功");
sri->set_subcommand(mp::MP_SUB_TYPE::MP_ADD_SUCCESS);
return sri;
}
}

View File

@ -16,7 +16,7 @@ public:
public:
// 唯一对开接口
mp::sri* friendImProve(mp::body* body);
mp::sri* FetchUserFriend(uint64_t account, const std::string& data);
void FetchUserFriends(uint64_t account, const std::string& data);
private:
mp::sri* add_contact_person(mp::body* body);