IM/MS/mmm/analysis.h
2023-07-01 20:22:27 +08:00

44 lines
1.1 KiB
C++

//
// Created by dongl on 23-4-21.
//
#ifndef IM2_ANALYSIS_H
#define IM2_ANALYSIS_H
#include <variant>
#include "proto/mp.request.pb.h"
#include "agreement.h"
class analysis {
public:
analysis(std::shared_ptr<mp::mph>& mph, std::shared_ptr<mp::request>& request) : m_mph(mph), m_request(request) {
}
analysis(std::shared_ptr<mp::mph>& mph, std::shared_ptr<mp::im::msg_data>& data) : m_mph(mph), m_data(data) {
}
std::shared_ptr<agreement_request> operator () (bufferevent* bev, sockaddr_in* addr) {
// agreement_request
auto agreementRequest = std::make_shared<agreement_request>(agreement_request());
// 判断是im数据包 还是 操作逻辑包
if (m_mph->mp_type() <= 200) {
agreementRequest->set(m_mph, m_request, bev, addr);
} else {
agreementRequest->set(m_mph, m_data, bev, addr);
}
return agreementRequest;
}
private:
std::shared_ptr<mp::mph> m_mph;
std::shared_ptr<mp::request> m_request;
std::shared_ptr<mp::im::msg_data> m_data;
};
#endif //IM2_ANALYSIS_H