1 Star 1 Fork 3

JackieSP/AgvDispatch

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
msgprocess.h 2.46 KB
一键复制 编辑 原始数据 按行查看 历史
qintxwd 提交于 2018-07-28 08:38 . 采用boost asio作为网络库
#ifndef MSGPROCESS_H
#define MSGPROCESS_H
#include <memory>
#include <list>
#include <mutex>
#include "utils/noncopyable.h"
#include "protocol.h"
#include "network/session.h"
class MsgProcess;
using MsgProcessPtr = std::shared_ptr<MsgProcess>;
typedef enum{
ENUM_NOTIFY_ALL_TYPE_MAP_UPDATE = 0,
ENUM_NOTIFY_ALL_TYPE_ERROR,
}ENUM_NOTIFY_ALL_TYPE;
class MsgProcess : public noncopyable,public std::enable_shared_from_this<MsgProcess>
{
public:
static MsgProcessPtr getInstance(){
static MsgProcessPtr m_inst = MsgProcessPtr(new MsgProcess());
return m_inst;
}
bool init();
void removeSubSession(int session);
//用户断开连接导致 用户退出登录
void sessionLogout(int user_id);
//进来一个消息,分配给一个线程去处理它
void processOneMsg(const Json::Value &request,SessionPtr session);
//发布一个日志消息
void publishOneLog(USER_LOG log);
//通知所有用户的事件
void notifyAll(ENUM_NOTIFY_ALL_TYPE type);
//发生错误,需要告知
void errorOccur(int code,std::string msg,bool needConfirm);
//用户接口
void interAddSubAgvPosition(SessionPtr conn, const Json::Value &request);
void interAddSubAgvStatus(SessionPtr conn, const Json::Value &request);
void interAddSubTask(SessionPtr conn, const Json::Value &request);
void interAddSubLog(SessionPtr conn, const Json::Value &request);
void interRemoveSubAgvPosition(SessionPtr conn, const Json::Value &request);
void interRemoveSubAgvStatus(SessionPtr conn,const Json::Value &request);
void interRemoveSubTask(SessionPtr conn, const Json::Value &request);
void interRemoveSubLog(SessionPtr conn, const Json::Value &request);
void onSessionClosed(int id);
void addSubAgvPosition(int id);
void addSubAgvStatus(int id);
void addSubTask(int id);
void addSubLog(int id);
void removeSubAgvPosition(int id);
void removeSubAgvStatus(int id);
void removeSubTask(int id);
void removeSubLog(int id);
private:
void publisher_agv_position();
void publisher_agv_status();
void publisher_task();
MsgProcess();
std::mutex psMtx;
std::list<int> agvPositionSubers;
std::mutex ssMtx;
std::list<int> agvStatusSubers;
std::mutex tsMtx;
std::list<int> taskSubers;
std::mutex lsMtx;
std::list<int> logSubers;
std::mutex errorMtx;
int error_code;
std::string error_info;
bool needConfirm;
};
#endif // MSGPROCESS_H
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/JackieSP/AgvDispatch.git
git@gitee.com:JackieSP/AgvDispatch.git
JackieSP
AgvDispatch
AgvDispatch
master

搜索帮助