// // Created by dongl on 23-4-28. // #include "handler.h" #include "Response.h" // handler 保有 session session* handler::session = new class session(); /// resp im void handler::resp(const std::shared_ptr& request, const std::shared_ptr& response) { /// 用户操作逻辑包 // 定义200序号一下的为操作逻辑业务逻辑 请求与响应 +20 就能一一对应 // 例如 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->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(); // auto user = session->find_user(response->m_sri.account()); // if (user.has_value()) { // printf("%s\n", user.value()->ip); // } bufferevent_write(request->m_bev, ret.c_str(), ret.size()); delete resp; } /// 聊天消息包 else { handler::send(request, response); } } /// end resp im // 聊天消息包 void handler::send(const std::shared_ptr &request, const std::shared_ptr &response) { // 查询在线的用户信息 auto ret = session->find_user_fd(request->m_body.target()); // 用户信息结构体 userinfo *user; if (ret.has_value()) { user = ret->second; } } /// end curr mem user curd void handler::ccp2p(const std::shared_ptr &request, const std::shared_ptr &response) { } void handler::remove_user(bufferevent* bev) { session->remove_user(bev); } std::optional handler::get_session(bufferevent *bev, const std::string &session_key) { return session->get_session(bev, session_key); } void handler::remove_session(bufferevent *bev, const std::string &session_key) { session->remove_session(bev, session_key); }