44 lines
1.1 KiB
C++
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
|