guitask.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #include "SpBase.h"
  2. #include "guitask.h"
  3. #include "EntitySessionManager.h"
  4. #include <map>
  5. auto createMapFun = []()->std::map<std::string, CefInfo> {
  6. std::map<std::string, CefInfo> nullMap;
  7. return nullMap;
  8. };
  9. std::map<std::string, CefInfo> chromiumRpcTask::m_cefArr = createMapFun();
  10. struct callback_entry : public IReleasable
  11. {
  12. virtual ~callback_entry() {}
  13. CSimpleStringA EntityName;
  14. union {
  15. void* pRawData;
  16. int state;
  17. };
  18. int op;
  19. ErrorCodeEnum ErrorResult;
  20. };
  21. #define OP_START_ENTITY 1
  22. #define OP_STOP_ENTITY 0
  23. #define OP_PAUSE_ENTITY 2
  24. #define OP_TERMINATE_ENTITY 3
  25. #define OP_CONTINUE_ENTITY 4
  26. #define OP_FIRE_ENTITY_STATE 5
  27. chromiumRpcTask::chromiumRpcTask()
  28. :m_rpcServerWork(false)
  29. {
  30. }
  31. chromiumRpcTask::~chromiumRpcTask()
  32. {
  33. }
  34. std::pair<bool, int> chromiumRpcTask::updateCefclientInfo(rpc_conn conn, std::string sign, std::string runUrl, int controlPort)
  35. {
  36. if (0 == sign.length())
  37. return std::make_pair(false, 0);
  38. auto cefIt = m_cefArr.find(sign);
  39. if (m_cefArr.end() == cefIt) {
  40. //can not find
  41. CefInfo cur;
  42. cur.runUrl = runUrl;
  43. cur.controlPort = controlPort;
  44. m_cefArr.insert(std::make_pair(sign, cur));
  45. }
  46. //do not update
  47. return std::make_pair(true, 0);
  48. }
  49. bool chromiumRpcTask::openrpcServer(int port)
  50. {
  51. std::thread thd([&] {
  52. m_server.reset(new rpc_server(port, std::thread::hardware_concurrency()));
  53. m_server->register_handler("updateCefclientInfo", chromiumRpcTask::updateCefclientInfo);
  54. m_server->run();
  55. });
  56. thd.detach();
  57. //Dbg("rpc start, async run");
  58. m_rpcServerWork = true;
  59. return true;
  60. }
  61. void chromiumRpcTask::publishMsg(LogMsg out)
  62. {
  63. m_server->publish("outMsg", out);
  64. }