// // Created by dongl on 23-4-28. // #include "handler.h" #include "Response.h" std::map handler::user_fd; void handler::resp(const std::shared_ptr& request, const std::shared_ptr& response) { /// 用户操作逻辑包 // 定义100序号一下的为操作逻辑业务逻辑 请求与响应 +20 就能一一对应 // 例如 login包类型为 request login==0 那么响应这个登陆信息就是 response login==0+20 // 100 以上 为im msg 通讯的包类型序号 if (request->m_mph->mp_type() < 100) { auto resp = new Response((mp::MP_TYPE) (request->m_mph->mp_type() + 20), response->m_sri.sri_code(), response->m_sri.sri_username(), response->m_sri.sri_msg(), response->m_sri.sri_token()); auto ret = resp->packet(); bufferevent_write(request->m_bev, ret.c_str(), ret.size()); delete resp; } /// 聊天消息包 else { handler::send(request, response); } } void handler::send(const std::shared_ptr &request, const std::shared_ptr &response) { // 聊天消息包 userinfo *user = user_fd.find(request->m_body.target())->second; } void handler::add_user(const std::shared_ptr& request) { auto ele = new userinfo(); ele->bev = request->m_bev; ele->ip = 0; user_fd.insert({request->m_body.account(), ele}); } void handler::remove_user(bufferevent *bev) { uint64_t target_ele; for (const auto &item: user_fd) { if (bev == item.second->bev) { target_ele = item.first; break; } } user_fd.erase(target_ele); } void handler::remove_user(const std::shared_ptr& request) { user_fd.erase(request->m_body.account()); }