Слияние кода завершено, страница обновится автоматически
#ifndef __SUPERVISOR_H_INCLUDED__
#define __SUPERVISOR_H_INCLUDED__
#include "mongoose.h"
#include "command.h"
#include "json.h"
class Supervisor {
enum EMethod {
GET = 0,
POST
};
typedef void (Supervisor::*Proc)(mg_connection * pConn, const Json::Value & rParam);
typedef struct Processor {
EMethod emMethod;
Proc fProc;
} Processor;
public:
Supervisor() : _iMgr(), _iConf(), _pAuth(nullptr) {}
static void Dispatch(mg_connection * pConn, int nEvent, void * pData);
void Start(Command & rCmd);
void Breath();
bool CheckConnect(mg_connection * pConn);
bool CheckAuth(mg_connection * pConn, http_message * pMsg);
void ResponseClose(mg_connection * pConn);
void ResponseResource(mg_connection * pConn, const std::string & sPath);
void ResponseWebsocketOpened(mg_connection * pConn, const std::string & sUrl);
void ResponseApi(mg_connection * pConn, http_message * pMsg);
void ResponseNeedAuth(mg_connection * pConn);
void Reload(mg_connection * pConn, const Json::Value & rParam);
void AddWatcher(mg_connection * pConn, const Json::Value & rParam);
void EditWatcher(mg_connection * pConn, const Json::Value & rParam);
void StartWatcher(mg_connection * pConn, const Json::Value & rParam);
void StopWatcher(mg_connection * pConn, const Json::Value & rParam);
void DeleteWatcher(mg_connection * pConn, const Json::Value & rParam);
private:
bool LoadSetting();
void SaveSetting();
void Register(const std::string & sUrl, EMethod emMethod, Proc fProc);
Json::Value Url2Json(const char * pData, size_t nSize);
Json::Value GetWatcherInfo(const std::string & sName);
Json::Value GetConf(const std::string & sName);
void Response(mg_connection * pConn, int nHttpCode, const std::string & sHeader, const std::string & sContent);
void Broadcast(const std::string & sScope, const std::string & sJson);
private:
mg_mgr _iMgr;
Json::Value _iConf;
FILE * _pAuth;
std::vector<mg_connection *> _vSockets;
std::map<std::string, Processor> _mApis;
};
#endif//! __SUPERVISOR_H_INCLUDED__
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )