ENH: limit network request times
Jira: STUDIO-4615 Change-Id: If365de54d3028f98cf3a720873378ba6fcfa5589
This commit is contained in:
parent
4c2cbe4c15
commit
e591e898af
3 changed files with 36 additions and 34 deletions
|
@ -105,6 +105,7 @@ public:
|
||||||
int job_id;
|
int job_id;
|
||||||
int design_id;
|
int design_id;
|
||||||
int profile_id;
|
int profile_id;
|
||||||
|
int instance_id;
|
||||||
std::string task_id;
|
std::string task_id;
|
||||||
std::string model_id;
|
std::string model_id;
|
||||||
std::string model_name;
|
std::string model_name;
|
||||||
|
|
|
@ -437,6 +437,12 @@ void PrintingTaskPanel::create_panel(wxWindow* parent)
|
||||||
m_score_staticline->Hide();
|
m_score_staticline->Hide();
|
||||||
sizer->Add(0, 0, 0, wxTOP, FromDIP(15));
|
sizer->Add(0, 0, 0, wxTOP, FromDIP(15));
|
||||||
sizer->Add(m_score_staticline, 0, wxEXPAND | wxALL, FromDIP(10));
|
sizer->Add(m_score_staticline, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
|
m_request_failed_info = new wxStaticText(parent, wxID_ANY, _L("You have completed printing the mall model, but the synchronization of rating information has failed. \nIf you need to resynchronize, please reselect the printer."), wxDefaultPosition, wxDefaultSize, 0);
|
||||||
|
m_request_failed_info->Wrap(-1);
|
||||||
|
sizer->Add(m_request_failed_info, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||||
|
m_request_failed_info->SetForegroundColour(*wxRED);
|
||||||
|
m_request_failed_info->SetFont(::Label::Body_10);
|
||||||
|
m_request_failed_info->Hide();
|
||||||
|
|
||||||
m_score_subtask_info = new wxPanel(parent, wxID_ANY);
|
m_score_subtask_info = new wxPanel(parent, wxID_ANY);
|
||||||
m_score_subtask_info->SetBackgroundColour(*wxWHITE);
|
m_score_subtask_info->SetBackgroundColour(*wxWHITE);
|
||||||
|
@ -1717,7 +1723,6 @@ void StatusPanel::on_market_scoring(wxCommandEvent &event) {
|
||||||
|
|
||||||
if (ret == wxID_OK) {
|
if (ret == wxID_OK) {
|
||||||
m_score_data->rating_id = -1;
|
m_score_data->rating_id = -1;
|
||||||
m_project_task_panel->set_star_count_dirty(false);
|
|
||||||
m_print_finish = false;
|
m_print_finish = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1755,7 +1760,6 @@ void StatusPanel::on_market_scoring(wxCommandEvent &event) {
|
||||||
|
|
||||||
if (ret == wxID_OK) {
|
if (ret == wxID_OK) {
|
||||||
m_score_data->rating_id = -1;
|
m_score_data->rating_id = -1;
|
||||||
m_project_task_panel->set_star_count_dirty(false);
|
|
||||||
m_print_finish = false;
|
m_print_finish = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -2789,35 +2793,45 @@ void StatusPanel::update_subtask(MachineObject *obj)
|
||||||
m_project_task_panel->enable_abort_button(false);
|
m_project_task_panel->enable_abort_button(false);
|
||||||
m_project_task_panel->enable_pause_resume_button(false, "resume_disable");
|
m_project_task_panel->enable_pause_resume_button(false, "resume_disable");
|
||||||
if (wxGetApp().has_model_mall()) {
|
if (wxGetApp().has_model_mall()) {
|
||||||
//determine whether the model is mall model
|
|
||||||
bool is_market_task = obj->get_modeltask() && obj->get_modeltask()->design_id > 0;
|
bool is_market_task = obj->get_modeltask() && obj->get_modeltask()->design_id > 0;
|
||||||
if (is_market_task) {
|
if (is_market_task) {
|
||||||
NetworkAgent *agent = wxGetApp().getAgent();
|
NetworkAgent *agent = wxGetApp().getAgent();
|
||||||
if (agent && IsShownOnScreen() && !m_print_finish) {
|
if (agent && IsShownOnScreen() && !m_print_finish) {
|
||||||
|
m_project_task_panel->get_request_rating_failed_info()->Hide();
|
||||||
int job_id = obj->get_modeltask()->job_id;
|
int instance_id = obj->get_modeltask()->instance_id;
|
||||||
boost::thread([this, agent, job_id] {
|
m_print_finish = true;
|
||||||
|
std::string dev_id = obj->dev_id;
|
||||||
|
boost::thread([this, agent, instance_id, dev_id] {
|
||||||
try {
|
try {
|
||||||
std::string rating_result;
|
std::string rating_result;
|
||||||
unsigned int http_code = 0;
|
unsigned int http_code = 404;
|
||||||
std::string http_error;
|
std::string http_error;
|
||||||
int rating_id = -1;
|
int rating_id = -1;
|
||||||
int res = agent->get_model_mall_rating_result(job_id, rating_result, http_code, http_error);
|
int res = -1;
|
||||||
|
int request_times = 0;
|
||||||
|
do {
|
||||||
|
if (!this || !(this->obj) || this->obj->dev_id != dev_id || request_times > 3) return;
|
||||||
|
if (request_times) {
|
||||||
|
std::chrono::seconds sleepDuration(3);
|
||||||
|
}
|
||||||
|
res = agent->get_model_mall_rating_result(instance_id, rating_result, http_code, http_error);
|
||||||
|
BOOST_LOG_TRIVIAL(info) << "request times: "<< request_times;
|
||||||
|
request_times++;
|
||||||
|
} while (res != 0 && 404 == http_code);
|
||||||
|
|
||||||
if (0 == res) {
|
if (0 == res) {
|
||||||
m_rating_result = json::parse(rating_result);
|
m_rating_result = json::parse(rating_result);
|
||||||
if (m_rating_result.contains("id")) {
|
if (m_rating_result.contains("id")) {
|
||||||
rating_id = m_rating_result["id"].get<unsigned int>();
|
rating_id = m_rating_result["id"].get<unsigned int>();
|
||||||
|
if (!this || !(this->obj) || this->obj->dev_id != dev_id) return;
|
||||||
m_project_task_panel->market_scoring_show();
|
m_project_task_panel->market_scoring_show();
|
||||||
BOOST_LOG_TRIVIAL(info) << "show scoring page";
|
BOOST_LOG_TRIVIAL(info) << "show scoring page";
|
||||||
bool is_update = model_score_is_update();
|
|
||||||
// this mall model has score, user do not click star, Initialize scores only once per print startup program
|
// this mall model has score, user do not click star, Initialize scores only once per print startup program
|
||||||
if (is_update ||
|
if ((m_rating_result.contains("score"))) {
|
||||||
(!m_project_task_panel->get_star_count_dirty() && !m_print_finish && IsShownOnScreen() && m_rating_result.contains("score"))) {
|
|
||||||
int star_count = m_rating_result["score"].get<int>();
|
int star_count = m_rating_result["score"].get<int>();
|
||||||
m_project_task_panel->set_star_count(star_count);
|
m_project_task_panel->set_star_count(star_count);
|
||||||
BOOST_LOG_TRIVIAL(info) << "Initialize scores";
|
BOOST_LOG_TRIVIAL(info) << "Initialize scores";
|
||||||
m_project_task_panel->set_star_count_dirty(true);
|
|
||||||
m_print_finish = true;
|
|
||||||
if (0 != star_count) {
|
if (0 != star_count) {
|
||||||
m_project_task_panel->get_market_scoring_button()->Enable(true);
|
m_project_task_panel->get_market_scoring_button()->Enable(true);
|
||||||
m_project_task_panel->set_has_reted_text(true);
|
m_project_task_panel->set_has_reted_text(true);
|
||||||
|
@ -2826,6 +2840,10 @@ void StatusPanel::update_subtask(MachineObject *obj)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
m_project_task_panel->get_request_rating_failed_info()->Show();
|
||||||
|
BOOST_LOG_TRIVIAL(info) << "model mall result request failed";
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
m_project_task_panel->market_scoring_hide();
|
m_project_task_panel->market_scoring_hide();
|
||||||
|
@ -2844,6 +2862,7 @@ void StatusPanel::update_subtask(MachineObject *obj)
|
||||||
} else { // model printing is not finished, hide scoring page
|
} else { // model printing is not finished, hide scoring page
|
||||||
m_project_task_panel->enable_abort_button(true);
|
m_project_task_panel->enable_abort_button(true);
|
||||||
m_project_task_panel->market_scoring_hide();
|
m_project_task_panel->market_scoring_hide();
|
||||||
|
m_project_task_panel->get_request_rating_failed_info()->Hide();
|
||||||
if (m_print_finish) {
|
if (m_print_finish) {
|
||||||
m_print_finish = false;
|
m_print_finish = false;
|
||||||
}
|
}
|
||||||
|
@ -2887,21 +2906,6 @@ void StatusPanel::update_subtask(MachineObject *obj)
|
||||||
this->Layout();
|
this->Layout();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool StatusPanel::model_score_is_update()
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
if (m_last_result["id"] != m_rating_result["id"] || m_last_result["content"] != m_rating_result["content"] || m_last_result["images"] != m_rating_result["images"]) {
|
|
||||||
m_last_result = m_rating_result;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} catch (...) {
|
|
||||||
BOOST_LOG_TRIVIAL(info) << "m_last_result first initial";
|
|
||||||
m_last_result = m_rating_result;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void StatusPanel::update_cloud_subtask(MachineObject *obj)
|
void StatusPanel::update_cloud_subtask(MachineObject *obj)
|
||||||
{
|
{
|
||||||
if (!obj) return;
|
if (!obj) return;
|
||||||
|
|
|
@ -180,6 +180,7 @@ private:
|
||||||
wxStaticText* m_staticText_progress_left;
|
wxStaticText* m_staticText_progress_left;
|
||||||
wxStaticText* m_staticText_layers;
|
wxStaticText* m_staticText_layers;
|
||||||
wxStaticText * m_has_rated_prompt;
|
wxStaticText * m_has_rated_prompt;
|
||||||
|
wxStaticText * m_request_failed_info;
|
||||||
wxStaticBitmap* m_bitmap_thumbnail;
|
wxStaticBitmap* m_bitmap_thumbnail;
|
||||||
wxStaticBitmap* m_bitmap_static_use_time;
|
wxStaticBitmap* m_bitmap_static_use_time;
|
||||||
wxStaticBitmap* m_bitmap_static_use_weight;
|
wxStaticBitmap* m_bitmap_static_use_weight;
|
||||||
|
@ -226,11 +227,11 @@ public:
|
||||||
Button* get_market_scoring_button() {return m_button_market_scoring;};
|
Button* get_market_scoring_button() {return m_button_market_scoring;};
|
||||||
Button* get_clean_button() {return m_button_clean;};
|
Button* get_clean_button() {return m_button_clean;};
|
||||||
wxStaticBitmap* get_bitmap_thumbnail() {return m_bitmap_thumbnail;};
|
wxStaticBitmap* get_bitmap_thumbnail() {return m_bitmap_thumbnail;};
|
||||||
|
wxStaticText * get_request_rating_failed_info() { return m_request_failed_info; }
|
||||||
int get_star_count() { return m_star_count; }
|
int get_star_count() { return m_star_count; }
|
||||||
void set_star_count(int star_count);
|
void set_star_count(int star_count);
|
||||||
std::vector<ScalableButton *> &get_score_star() { return m_score_star; }
|
std::vector<ScalableButton *> &get_score_star() { return m_score_star; }
|
||||||
bool get_star_count_dirty() { return m_star_count_dirty; }
|
bool get_star_count_dirty() { return m_star_count_dirty; }
|
||||||
void set_star_count_dirty(bool dirty) { m_star_count_dirty = dirty; }
|
|
||||||
void set_has_reted_text(bool has_rated);
|
void set_has_reted_text(bool has_rated);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -466,7 +467,6 @@ protected:
|
||||||
bool m_is_load_with_temp = false;
|
bool m_is_load_with_temp = false;
|
||||||
bool m_print_finish = false;
|
bool m_print_finish = false;
|
||||||
json m_rating_result;
|
json m_rating_result;
|
||||||
json m_last_result;
|
|
||||||
|
|
||||||
wxWebRequest web_request;
|
wxWebRequest web_request;
|
||||||
bool bed_temp_input = false;
|
bool bed_temp_input = false;
|
||||||
|
@ -577,9 +577,6 @@ protected:
|
||||||
void on_webrequest_state(wxWebRequestEvent &evt);
|
void on_webrequest_state(wxWebRequestEvent &evt);
|
||||||
bool is_task_changed(MachineObject* obj);
|
bool is_task_changed(MachineObject* obj);
|
||||||
|
|
||||||
/* model mall score */
|
|
||||||
bool model_score_is_update();
|
|
||||||
|
|
||||||
/* camera */
|
/* camera */
|
||||||
void update_camera_state(MachineObject* obj);
|
void update_camera_state(MachineObject* obj);
|
||||||
bool show_vcamera = false;
|
bool show_vcamera = false;
|
||||||
|
|
Loading…
Reference in a new issue