FIX: not handle print sequence id in mqtt message

Change-Id: I2d097cc23b165a2c8c7e85cd38a34b314f7b0bb5
This commit is contained in:
chunmao.guo 2023-06-07 19:17:15 +08:00 committed by Lane.Wei
parent e7af4eeccc
commit 2ccf0a84d8
2 changed files with 4 additions and 26 deletions

View file

@ -2484,7 +2484,7 @@ int MachineObject::parse_json(std::string payload)
parse_msg_count++; parse_msg_count++;
std::chrono::system_clock::time_point clock_start = std::chrono::system_clock::now(); std::chrono::system_clock::time_point clock_start = std::chrono::system_clock::now();
this->set_online_state(true); this->set_online_state(true);
if (m_active_state == NotActive) m_active_state = SequenceNotValid; if (m_active_state == NotActive) m_active_state = Active;
/* update last received time */ /* update last received time */
last_update_time = std::chrono::system_clock::now(); last_update_time = std::chrono::system_clock::now();
@ -2498,26 +2498,6 @@ int MachineObject::parse_json(std::string payload)
} }
if (j_pre.contains("print")) { if (j_pre.contains("print")) {
if (j_pre["print"].contains("sequence_id") && j_pre["print"]["command"] == "push_status") {
if (j_pre["print"]["sequence_id"].is_string()) {
std::string str_seq = j_pre["print"]["sequence_id"].get<std::string>();
try {
int sequence_id = stoi(str_seq);
if (j_pre["print"]["msg"].get<int>() == 0) { // all message
if (m_active_state == SequenceNotValid) m_active_state = SequenceValid; // Have init print_sequence_id
print_sequence_id = sequence_id;
} else if (sequence_id != print_sequence_id + 1 && m_active_state >= SequenceValid) {
wxLogWarning("parse_json: print_sequence_id gap, %d -> %d %s", print_sequence_id, sequence_id, wxString::FromUTF8(payload));
if (m_active_state == SequenceValid) m_active_state = SequenceNotValid;
GUI::wxGetApp().CallAfter([this] { this->command_request_push_all(); });
} else if (m_active_state >= SequenceValid) {
print_sequence_id = sequence_id;
}
} catch (...) {
return 0;
}
}
}
if (j_pre["print"].contains("command")) { if (j_pre["print"].contains("command")) {
if (j_pre["print"]["command"].get<std::string>() == "push_status") { if (j_pre["print"]["command"].get<std::string>() == "push_status") {
if (j_pre["print"].contains("msg")) { if (j_pre["print"].contains("msg")) {
@ -3895,7 +3875,7 @@ int MachineObject::parse_json(std::string payload)
} }
catch (...) {} catch (...) {}
if (m_active_state == SequenceValid) { if (m_active_state == Active) {
m_active_state = UpdateToDate; m_active_state = UpdateToDate;
parse_version_func(); parse_version_func();
if (is_support_tunnel_mqtt && connection_type() != "lan") { if (is_support_tunnel_mqtt && connection_type() != "lan") {

View file

@ -422,8 +422,7 @@ public:
enum ActiveState { enum ActiveState {
NotActive, NotActive,
SequenceNotValid, Active,
SequenceValid,
UpdateToDate UpdateToDate
}; };
@ -497,9 +496,8 @@ public:
std::chrono::system_clock::time_point last_request_push; /* last received print push from machine */ std::chrono::system_clock::time_point last_request_push; /* last received print push from machine */
std::chrono::system_clock::time_point last_request_start; /* last received print push from machine */ std::chrono::system_clock::time_point last_request_start; /* last received print push from machine */
int m_active_state = 0; // 0 - not active, 1 - active but print_sequence_id not valid, 1 - active but no update-to-date state, 2 - update-to-date int m_active_state = 0; // 0 - not active, 1 - active, 2 - update-to-date
bool is_support_tunnel_mqtt = false; bool is_support_tunnel_mqtt = false;
int print_sequence_id = 0;
bool is_tunnel_mqtt = false; bool is_tunnel_mqtt = false;
/* ams properties */ /* ams properties */