85 lines
2.3 KiB
C++
85 lines
2.3 KiB
C++
//
|
|
// 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<agreement_request>& request,
|
|
const std::shared_ptr<agreement_response>& 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();
|
|
|
|
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<agreement_request> &request, const std::shared_ptr<agreement_response> &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<agreement_request> &request, const std::shared_ptr<agreement_response> &response) {
|
|
|
|
}
|
|
|
|
void handler::remove_user(bufferevent* bev) {
|
|
session->remove_user(bev);
|
|
}
|
|
|
|
std::optional<std::string> handler::get_session(bufferevent *bev, const std::string &session_key) {
|
|
return session->get_session(bev, session_key);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|