IM/MS/mmm/handler.cpp
2023-05-03 19:09:14 +08:00

55 lines
1.5 KiB
C++

//
// Created by dongl on 23-4-28.
//
#include "handler.h"
#include "Response.h"
std::map<uint64_t, userinfo*> handler::user_fd;
void handler::resp(const std::shared_ptr<agreement_request>& request,
const std::shared_ptr<agreement_response>& response) {
// 用户操作逻辑包
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;
}
void
handler::send(const std::shared_ptr<agreement_request> &request, const std::shared_ptr<agreement_response> &response) {
// 聊天消息包
userinfo *user = user_fd.find(request->m_body.target())->second;
}
void handler::add_user(const std::shared_ptr<agreement_request>& 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<agreement_request>& request) {
user_fd.erase(request->m_body.account());
}