MCPcopy Create free account
hub / github.com/RGAA-Software/GoDesk / ParseMessage

Method ParseMessage

src/service/service_msg_server.cpp:110–148  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

108 }
109
110 void ServiceMsgServer::ParseMessage(const std::shared_ptr<SessionWrapper>& sw, std::string_view data) {
111 tc::ServiceMessage msg;
112 try {
113 msg.ParseFromString(std::string(data.data(), data.size()));
114 auto type = msg.type();
115 if (type == ServiceMessageType::kSrvStartServer) {
116 auto sub = msg.start_server();
117 std::vector<std::string> args;
118 for (int i = 0; i < sub.args_size(); i++) {
119 args.push_back(sub.args(i));
120 }
121 ProcessStartRender(sub.work_dir(), sub.app_path(), args);
122 }
123 else if (type == ServiceMessageType::kSrvStopServer) {
124 ProcessStopRender();
125 }
126 else if (type == ServiceMessageType::kSrvRestartServer) {
127 auto sub = msg.restart_server();
128 std::vector<std::string> args;
129 for (int i = 0; i < sub.args_size(); i++) {
130 args.push_back(sub.args(i));
131 }
132 ProcessRestartRender(sub.work_dir(), sub.app_path(), args);
133 }
134 else if (type == ServiceMessageType::kSrvHeartBeat) {
135 auto sub = msg.heart_beat();
136 sw->from_ = sub.from();
137 ProcessHeartBeat(sub.index());
138 }
139 else if (type == ServiceMessageType::kSrvReqCtrlAltDelete) {
140 auto sub = msg.req_ctrl_alt_delete();
141 ProcessCtrlAltDelete();
142 LOGI("client, id:{}, device id: {}, request control alt delete", sub.req_device_id(), sub.req_stream_id());
143 }
144 }
145 catch(...) {
146 LOGE("Parse message failed!");
147 }
148 }
149
150 void ServiceMsgServer::ProcessStartRender(const std::string& work_dir, const std::string& app_path, const std::vector<std::string>& args) {
151 if (!render_manager_->StartDesktopRender(work_dir, app_path, args)) {

Callers 1

StartMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected