| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- #include "SpBase.h"
- #include "guitask.h"
- #include "EntitySessionManager.h"
- #include <map>
- auto createMapFun = []()->std::map<std::string, CefInfo> {
- std::map<std::string, CefInfo> nullMap;
- return nullMap;
- };
- std::map<std::string, CefInfo> chromiumRpcTask::m_cefArr = createMapFun();
- struct callback_entry : public IReleasable
- {
- virtual ~callback_entry() {}
- CSimpleStringA EntityName;
- union {
- void* pRawData;
- int state;
- };
- int op;
- ErrorCodeEnum ErrorResult;
- };
- #define OP_START_ENTITY 1
- #define OP_STOP_ENTITY 0
- #define OP_PAUSE_ENTITY 2
- #define OP_TERMINATE_ENTITY 3
- #define OP_CONTINUE_ENTITY 4
- #define OP_FIRE_ENTITY_STATE 5
- chromiumRpcTask::chromiumRpcTask()
- :m_rpcServerWork(false)
- {
- }
- chromiumRpcTask::~chromiumRpcTask()
- {
- }
- std::pair<bool, int> chromiumRpcTask::updateCefclientInfo(rpc_conn conn, std::string sign, std::string runUrl, int controlPort)
- {
- if (0 == sign.length())
- return std::make_pair(false, 0);
- auto cefIt = m_cefArr.find(sign);
- if (m_cefArr.end() == cefIt) {
- //can not find
- CefInfo cur;
- cur.runUrl = runUrl;
- cur.controlPort = controlPort;
- m_cefArr.insert(std::make_pair(sign, cur));
- }
- //do not update
- return std::make_pair(true, 0);
- }
- bool chromiumRpcTask::openrpcServer(int port)
- {
- std::thread thd([&] {
- m_server.reset(new rpc_server(port, std::thread::hardware_concurrency()));
- m_server->register_handler("updateCefclientInfo", chromiumRpcTask::updateCefclientInfo);
- m_server->run();
- });
- thd.detach();
- //Dbg("rpc start, async run");
- m_rpcServerWork = true;
- return true;
- }
- void chromiumRpcTask::publishMsg(LogMsg out)
- {
- m_server->publish("outMsg", out);
- }
|