From d2e6f2ca29f9f0879f1cd6efba8c932110f098e9 Mon Sep 17 00:00:00 2001 From: ZhuangYumin Date: Fri, 15 Dec 2023 09:42:51 +0000 Subject: [PATCH] =?UTF-8?q?=E5=86=99=E5=A5=BD=E4=BA=86=E4=BC=9A=E8=AF=9D?= =?UTF-8?q?=E8=BF=87=E6=9C=9F=E5=90=8E=E8=87=AA=E5=8A=A8=E9=87=8D=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/engine.cpp | 32 ++++++++++++++++---------------- frontend/Web/index.html | 14 ++++++++++++++ frontend/Web/index.js | 2 +- 3 files changed, 31 insertions(+), 17 deletions(-) diff --git a/backend/src/engine.cpp b/backend/src/engine.cpp index 2584400..9916ba4 100644 --- a/backend/src/engine.cpp +++ b/backend/src/engine.cpp @@ -61,13 +61,13 @@ std::vector BookStoreEngineClass::Execute( login_stack.pop(); } if (!is_server) BookStore_ZYM::shut_down = true; - return is_server ? std::vector({"[Empty]"}) + return is_server ? std::vector({""}) : std::vector(); } if (operation_map.find(head) == operation_map.end()) { for (int i = 0; i < cmd.length(); i++) if (cmd[i] != ' ') return std::vector({"Invalid"}); - return is_server ? std::vector({"[Empty]"}) + return is_server ? std::vector({""}) : std::vector(); } if (!login_stack.empty()) @@ -78,77 +78,77 @@ std::vector BookStoreEngineClass::Execute( switch (operation_map[head]) { case OperationType::__Ksu: { auto ret = std::move(ExecuteSu(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({"[Empty]"}); + if (is_server && ret.size() == 0) return std::vector({""}); return ret; } case OperationType::__Klogout: { auto ret = std::move(ExecuteLogout(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({"[Empty]"}); + if (is_server && ret.size() == 0) return std::vector({""}); return ret; } case OperationType::__Kuseradd: { auto ret = std::move(ExecuteUserAdd(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({"[Empty]"}); + if (is_server && ret.size() == 0) return std::vector({""}); return ret; } case OperationType::__Kregister: { auto ret = std::move(ExecuteRegister(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({"[Empty]"}); + if (is_server && ret.size() == 0) return std::vector({""}); return ret; } case OperationType::__Kdelete: { auto ret = std::move(ExecuteDelete(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({"[Empty]"}); + if (is_server && ret.size() == 0) return std::vector({""}); return ret; } case OperationType::__Kpasswd: { auto ret = std::move(ExecutePasswd(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({"[Empty]"}); + if (is_server && ret.size() == 0) return std::vector({""}); return ret; } case OperationType::__Kselect: { auto ret = std::move(ExecuteSelect(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({"[Empty]"}); + if (is_server && ret.size() == 0) return std::vector({""}); return ret; } case OperationType::__Kmodify: { auto ret = std::move(ExecuteMOdify(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({"[Empty]"}); + if (is_server && ret.size() == 0) return std::vector({""}); return ret; } case OperationType::__Kimport: { auto ret = std::move(ExecuteImport(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({"[Empty]"}); + if (is_server && ret.size() == 0) return std::vector({""}); return ret; } case OperationType::__Kshow: { ss >> head; if (head == "finance") goto dst_showfinance; auto ret = std::move(ExecuteShow(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({"[Empty]"}); + if (is_server && ret.size() == 0) return std::vector({""}); return ret; } case OperationType::__Kshowfinance: { dst_showfinance:; auto ret = std::move(ExecuteShowFinance(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({"[Empty]"}); + if (is_server && ret.size() == 0) return std::vector({""}); return ret; } case OperationType::__Kbuy: { auto ret = std::move(ExecuteBuy(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({"[Empty]"}); + if (is_server && ret.size() == 0) return std::vector({""}); return ret; } case OperationType::__Kreport: { // return std::vector({"Invalid"}); auto ret = std::move(ExecuteReport(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({"[Empty]"}); + if (is_server && ret.size() == 0) return std::vector({""}); return ret; } case OperationType::__Klog: { // return std::vector({"Invalid"}); auto ret = std::move(ExecuteLog(cmd, login_stack)); - if (is_server && ret.size() == 0) return std::vector({"[Empty]"}); + if (is_server && ret.size() == 0) return std::vector({""}); return ret; } } diff --git a/frontend/Web/index.html b/frontend/Web/index.html index 7c301c2..98b6073 100644 --- a/frontend/Web/index.html +++ b/frontend/Web/index.html @@ -48,7 +48,21 @@ operation_count++; let raw_request="#Request "+session_token+" "+operation_count+" "+outhentication_key+"\n"+req; let raw_response=await RawRequest(raw_request); + console.log("get raw_response:"+raw_response); let line_numbers_of_res=parseInt(raw_response.split('\n')[0].split(' ')[2]); + if(line_numbers_of_res==-1) + { + console.log("Session expired"); + let tmp_channel=generateRandomString(10); + let ret=await RawRequest('#OpenSession '+tmp_channel); + operation_count=0; + session_token=ret.split('\n')[1].split(' ')[0]; + outhentication_key=ret.split('\n')[1].split(' ')[1]; + localStorage.setItem("session_token", session_token); + localStorage.setItem("outhentication_key", outhentication_key); + localStorage.setItem("operation_count", operation_count); + return await Request(req); + } let response=""; if(line_numbers_of_res>=1) response=raw_response.split('\n')[1]; for(let i=0;i { else{ res_block=line+'\n'; to_be_collect=parseInt(line.split(' ')[2]); - if(to_be_collect==0) + if(to_be_collect<=0) { const substrings = res_block.trim().split('\n')[0].split(' '); const session_token=substrings[0];