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

68 lines
1.5 KiB
C++

//
// Created by dongl on 23-4-20.
//
#ifndef IM2_AGREEMENT_H
#define IM2_AGREEMENT_H
#include <cstdint>
#include "Body.h"
#include "proto/mp.mph.pb.h"
#include "proto/mp.cqi.pb.h"
#include "proto/mp.sri.pb.h"
#include "proto/mp.response.pb.h"
#include "proto/mp.request.pb.h"
#include "event2/bufferevent.h"
#include "proto/mp.im.pb.h"
class agreement {
public:
agreement(){}
virtual ~agreement() {}
};
class agreement_request : public agreement{
public:
agreement_request();
~agreement_request();
public:
void set (std::shared_ptr<mp::mph> &mph, std::shared_ptr<mp::request>& request, bufferevent* bev, sockaddr_in* addr);
void set (std::shared_ptr<mp::mph> &mph, std::shared_ptr<mp::im::msg_data>& data, bufferevent* bev, sockaddr_in* addr);
public:
// 包头
std::shared_ptr<mp::mph> m_mph;
// im 包体 data
std::shared_ptr<mp::im::msg_data> m_data;
// *********** 逻辑包体
mp::body m_body;
mp::cqi m_cqi;
// *********** 逻辑包体 end
// 维护此链接的描述符号 fd
bufferevent* m_bev;
// 请求来源地址
sockaddr_in* m_addr;
};
class agreement_response : public agreement {
public:
agreement_response();
~agreement_response() override;
public:
void set (mp::sri* sri, bufferevent* bev);
public:
// im 包体 推送包
std::shared_ptr<mp::im::notice> m_notice;
// 返回 响应包体 内容
mp::sri* m_sri;
// 维护此链接的描述符号 fd
bufferevent* m_bev;
};
#endif //IM2_AGREEMENT_H