#ifndef HTTPSCOKET #define HTTPSCOKET #include "funall.h" using namespace std; class IIhttpsocket { public: function&&)> m_gamemsg{ nullptr }; function m_updatestatic{ nullptr }; function&&)> m_postmsg{ nullptr }; function m_writelog{ nullptr }; public: virtual void init() = 0; virtual bool postmsg(function funhttpmsg, map getdata) = 0; virtual void updatemsg(string strtype, boost::any getdata) = 0; }; class HttpSocket :public IIhttpsocket { typedef function getdata)> funcmsg; protected: unordered_map m_maparead; unordered_map m_mapuseridname; unordered_map> m_mapipwhite; default_random_engine m_random; string m_strshahead; string m_strshaheadcontent; void* m_psendhttp; uint32_t m_ucurid; //接受http消息 boost::shared_ptr data_time; boost::shared_ptr m_pmsgservice; boost::shared_ptr m_pmsgwork; map m_callmsg; bool m_brun; thread m_msgthread; //用户信息 protected: boost::shared_ptr m_puri; boost::shared_ptr m_pclient; //索引集合 boost::shared_ptr m_pallindex; // 用户数据库 boost::shared_ptr m_pdb; // 平台数据库 boost::shared_ptr m_platform; // 日志库 boost::shared_ptr m_gamelog; // task库 boost::shared_ptr m_ptask; // 推广数据库 boost::shared_ptr m_pvipuserdb; // 代理日志库 boost::shared_ptr m_viplog; // webdata数据库 boost::shared_ptr m_webdata; // 集合 boost::shared_ptr m_pcoll; //用户在线集合 boost::shared_ptr m_pplayuseronline; //用户登录集合 boost::shared_ptr m_userloginonline; //输赢集合 boost::shared_ptr m_plosewincoll; //推广集合 boost::shared_ptr m_pvipuser; //转分集合 boost::shared_ptr m_pusertradeinfo; //转分集合 boost::shared_ptr m_pviptradeinfo; //下载日志集合 boost::shared_ptr m_puserdowninfo; //操作日志集合 boost::shared_ptr m_poperatinfo; //vip日志统计表 boost::shared_ptr m_pgameviploginfo; boost::shared_ptr m_pgameserverloginfo; //总代日志统计临时表 boost::shared_ptr m_pvipalllogcache; //房间统计临时表 boost::shared_ptr m_pserverlogcache; //用户输赢计临时表 boost::shared_ptr m_puserlogcache; //商户日志统计临时表 boost::shared_ptr m_pviplogcache; //玩家日志统计表 boost::shared_ptr m_pgameuserloginfo; //全部日志 boost::shared_ptr m_pgameprizelog; //商家卖收分 boost::shared_ptr m_pvipscore; //商家卖收分 boost::shared_ptr m_pvipscoredate; //推广账号 boost::shared_ptr m_pvipuseraccounts; //玩家每天日志信息 boost::shared_ptr m_puserdatainfo; //商家配置表 boost::shared_ptr m_pvipconfigure; //商家子账号表 boost::shared_ptr m_pusersub; //汇率配置表 boost::shared_ptr m_pexechangerate; //游戏房间表 boost::shared_ptr m_pkinditem; //管理员api boost::shared_ptr m_pthreeadmin; //任务配置表 boost::shared_ptr m_pconfig; //设置白名单 boost::shared_ptr m_pipwhite; //设置转账和无缝申请 boost::shared_ptr m_papplyviplog; //vip留言日志 boost::shared_ptr m_pvipmsglog; //游戏配置表 boost::shared_ptr m_pgamelist; //游戏gamegameitem boost::shared_ptr m_pgamegameitem; //推广网站信息 boost::shared_ptr m_ppopularizesit; //信用代理-跑马灯 boost::shared_ptr m_pmarquee; //信用代理-联系客服 boost::shared_ptr m_pcustomerlink; //信用代理-topwinner boost::shared_ptr m_pcredittopwinner; // 活动 boost::shared_ptr m_activityfreegame; // 重发订单 boost::shared_ptr m_resendorder; //货币游戏排序 boost::shared_ptr m_pareagames; // playrecordini boost::shared_ptr m_pplayrecordini; // 游戏投注配置 boost::shared_ptr m_pgamebet; // activityini boost::shared_ptr m_pactivityini; // webserver 平台类型 boost::shared_ptr m_pplatformini; // thirdplat 第3方厂商管理 boost::shared_ptr m_pthirddeveloper; // thirdplat 第3方厂商游戏 boost::shared_ptr m_pthirdgames; public: HttpSocket(); ~HttpSocket(); virtual void init(); virtual bool postmsg(function funhttpmsg, map getdata) { return true;}; virtual void updatemsg(string strtype, boost::any getdata) {}; void stopmsg() {}; public: void sendreelmsg(string stronly, string strtarget, string strjson, function&& dofun); //更新拉取时间 void setsynctime(__int64 itimefrom, __int64 intimeto, __int32 page, bool bdone); void getsynctime(__int64& itimefrom, __int64& intimeto, __int32& page, bool& bdone); //拉取日志 void getgamehistory(__int64 dataFrom, __int64 dataTo, __int32 ifirstpage); }; ////////////////////////////////////JsonToBson////////////////////////////////////// void convertJsonToBson(bsoncxx::builder::basic::document& doc, const rapidjson::Value& jsonValue); void convertJsonValueToBson(bsoncxx::builder::basic::array& arr, const rapidjson::Value& jsonValue); void handleArray(bsoncxx::builder::basic::document& doc, const string& key, const rapidjson::Value& arrayValue); ////////////////////////////////////JsonToBson End////////////////////////////////////// #endif