MCPcopy Create free account
hub / github.com/OriginQ/QPanda-2 / wait_recv_task_result

Method wait_recv_task_result

Extensions/PilotOSMachine/TCPClient.h:293–390  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

291 }
292
293 bool wait_recv_task_result(std::string& recv_msg, const std::string &task_id)
294 {
295 PTraceInfo("recv_msg:" << recv_msg);
296 m_recv_buf = std::make_unique<char []> (MAX_BUF_SIZE);//TCPMsg::_make_arry_shared<char>(MAX_BUF_SIZE);
297
298 try
299 {
300 int recv_msg_body_size = 0;
301 while (true)
302 {
303 memset(m_recv_buf.get(), 0, MAX_BUF_SIZE);
304 recv_msg_body_size = full_recv(m_socket_id, m_recv_buf.get(), MAX_BUF_SIZE - 1, 0);
305 if (recv_msg_body_size)
306 {
307 JsonMsg::JsonParser parser;
308 if (parser.load_json(m_recv_buf.get()) && parser.has_member_string("taskId") && (parser.get_string("taskId") != task_id))
309 {
310 PTraceInfo("Wrong taskId: " << parser.get_string("taskId"));
311 return false;
312 }
313 }
314 PTraceInfo("tmp recv " << recv_msg_body_size << " B");
315
316 if (recv_msg_body_size > 0)
317 {
318 TCPMsg::TcpMsgHead* p_msg_head = (TCPMsg::TcpMsgHead*)m_recv_buf.get();
319 char* p_msg_body = (char*)(m_recv_buf.get()) + sizeof(TCPMsg::TcpMsgHead);
320
321 /* check msg type */
322 switch ((TCPMsg::TcpMsgType)p_msg_head->m_type)
323 {
324 case TCPMsg::TcpMsgType::STATE_MSG:
325 {
326 m_task_status = string(p_msg_body, recv_msg_body_size);
327 PTraceInfo("tcp recv status: " << m_task_status << ", for task:" << m_task_id);
328 const uint32_t status = std::stoul(m_task_status);
329 if ((status == ((uint32_t)(PilotQVM::TaskStatus::FAILED)))
330 || (status == ((uint32_t)(PilotQVM::TaskStatus::CANCELLED))))
331 {
332 PTraceError("Error: the status for task " << m_task_id << " is " << status);
333 //return false; /* 不退出循环,以接收具体错误信息 */
334 }
335 continue;
336 }
337 break;
338
339 case TCPMsg::TcpMsgType::RESULT_MSG:
340 {
341 stop_heart_thread();
342 recv_msg.append(string(p_msg_body, recv_msg_body_size));
343 PTraceInfo(" tmp recv result size:" << recv_msg_body_size);
344 }
345 break;
346
347 default:
348 PTraceError("Error: Undef msg type:" << p_msg_head->m_type);
349 return false;
350 }

Callers 3

tcp_recvMethod · 0.80
synchronous_executeMethod · 0.80

Calls 6

verify_msg_crcFunction · 0.85
load_jsonMethod · 0.80
has_member_stringMethod · 0.80
get_stringMethod · 0.80
getMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected