写好了会话过期后自动重发

This commit is contained in:
2023-12-15 09:42:51 +00:00
parent be33f6f29a
commit d2e6f2ca29
3 changed files with 31 additions and 17 deletions

View File

@ -61,13 +61,13 @@ std::vector<std::string> BookStoreEngineClass::Execute(
login_stack.pop(); login_stack.pop();
} }
if (!is_server) BookStore_ZYM::shut_down = true; if (!is_server) BookStore_ZYM::shut_down = true;
return is_server ? std::vector<std::string>({"[Empty]"}) return is_server ? std::vector<std::string>({""})
: std::vector<std::string>(); : std::vector<std::string>();
} }
if (operation_map.find(head) == operation_map.end()) { if (operation_map.find(head) == operation_map.end()) {
for (int i = 0; i < cmd.length(); i++) for (int i = 0; i < cmd.length(); i++)
if (cmd[i] != ' ') return std::vector<std::string>({"Invalid"}); if (cmd[i] != ' ') return std::vector<std::string>({"Invalid"});
return is_server ? std::vector<std::string>({"[Empty]"}) return is_server ? std::vector<std::string>({""})
: std::vector<std::string>(); : std::vector<std::string>();
} }
if (!login_stack.empty()) if (!login_stack.empty())
@ -78,77 +78,77 @@ std::vector<std::string> BookStoreEngineClass::Execute(
switch (operation_map[head]) { switch (operation_map[head]) {
case OperationType::__Ksu: { case OperationType::__Ksu: {
auto ret = std::move(ExecuteSu(cmd, login_stack)); auto ret = std::move(ExecuteSu(cmd, login_stack));
if (is_server && ret.size() == 0) return std::vector<std::string>({"[Empty]"}); if (is_server && ret.size() == 0) return std::vector<std::string>({""});
return ret; return ret;
} }
case OperationType::__Klogout: { case OperationType::__Klogout: {
auto ret = std::move(ExecuteLogout(cmd, login_stack)); auto ret = std::move(ExecuteLogout(cmd, login_stack));
if (is_server && ret.size() == 0) return std::vector<std::string>({"[Empty]"}); if (is_server && ret.size() == 0) return std::vector<std::string>({""});
return ret; return ret;
} }
case OperationType::__Kuseradd: { case OperationType::__Kuseradd: {
auto ret = std::move(ExecuteUserAdd(cmd, login_stack)); auto ret = std::move(ExecuteUserAdd(cmd, login_stack));
if (is_server && ret.size() == 0) return std::vector<std::string>({"[Empty]"}); if (is_server && ret.size() == 0) return std::vector<std::string>({""});
return ret; return ret;
} }
case OperationType::__Kregister: { case OperationType::__Kregister: {
auto ret = std::move(ExecuteRegister(cmd, login_stack)); auto ret = std::move(ExecuteRegister(cmd, login_stack));
if (is_server && ret.size() == 0) return std::vector<std::string>({"[Empty]"}); if (is_server && ret.size() == 0) return std::vector<std::string>({""});
return ret; return ret;
} }
case OperationType::__Kdelete: { case OperationType::__Kdelete: {
auto ret = std::move(ExecuteDelete(cmd, login_stack)); auto ret = std::move(ExecuteDelete(cmd, login_stack));
if (is_server && ret.size() == 0) return std::vector<std::string>({"[Empty]"}); if (is_server && ret.size() == 0) return std::vector<std::string>({""});
return ret; return ret;
} }
case OperationType::__Kpasswd: { case OperationType::__Kpasswd: {
auto ret = std::move(ExecutePasswd(cmd, login_stack)); auto ret = std::move(ExecutePasswd(cmd, login_stack));
if (is_server && ret.size() == 0) return std::vector<std::string>({"[Empty]"}); if (is_server && ret.size() == 0) return std::vector<std::string>({""});
return ret; return ret;
} }
case OperationType::__Kselect: { case OperationType::__Kselect: {
auto ret = std::move(ExecuteSelect(cmd, login_stack)); auto ret = std::move(ExecuteSelect(cmd, login_stack));
if (is_server && ret.size() == 0) return std::vector<std::string>({"[Empty]"}); if (is_server && ret.size() == 0) return std::vector<std::string>({""});
return ret; return ret;
} }
case OperationType::__Kmodify: { case OperationType::__Kmodify: {
auto ret = std::move(ExecuteMOdify(cmd, login_stack)); auto ret = std::move(ExecuteMOdify(cmd, login_stack));
if (is_server && ret.size() == 0) return std::vector<std::string>({"[Empty]"}); if (is_server && ret.size() == 0) return std::vector<std::string>({""});
return ret; return ret;
} }
case OperationType::__Kimport: { case OperationType::__Kimport: {
auto ret = std::move(ExecuteImport(cmd, login_stack)); auto ret = std::move(ExecuteImport(cmd, login_stack));
if (is_server && ret.size() == 0) return std::vector<std::string>({"[Empty]"}); if (is_server && ret.size() == 0) return std::vector<std::string>({""});
return ret; return ret;
} }
case OperationType::__Kshow: { case OperationType::__Kshow: {
ss >> head; ss >> head;
if (head == "finance") goto dst_showfinance; if (head == "finance") goto dst_showfinance;
auto ret = std::move(ExecuteShow(cmd, login_stack)); auto ret = std::move(ExecuteShow(cmd, login_stack));
if (is_server && ret.size() == 0) return std::vector<std::string>({"[Empty]"}); if (is_server && ret.size() == 0) return std::vector<std::string>({""});
return ret; return ret;
} }
case OperationType::__Kshowfinance: { case OperationType::__Kshowfinance: {
dst_showfinance:; dst_showfinance:;
auto ret = std::move(ExecuteShowFinance(cmd, login_stack)); auto ret = std::move(ExecuteShowFinance(cmd, login_stack));
if (is_server && ret.size() == 0) return std::vector<std::string>({"[Empty]"}); if (is_server && ret.size() == 0) return std::vector<std::string>({""});
return ret; return ret;
} }
case OperationType::__Kbuy: { case OperationType::__Kbuy: {
auto ret = std::move(ExecuteBuy(cmd, login_stack)); auto ret = std::move(ExecuteBuy(cmd, login_stack));
if (is_server && ret.size() == 0) return std::vector<std::string>({"[Empty]"}); if (is_server && ret.size() == 0) return std::vector<std::string>({""});
return ret; return ret;
} }
case OperationType::__Kreport: { case OperationType::__Kreport: {
// return std::vector<std::string>({"Invalid"}); // return std::vector<std::string>({"Invalid"});
auto ret = std::move(ExecuteReport(cmd, login_stack)); auto ret = std::move(ExecuteReport(cmd, login_stack));
if (is_server && ret.size() == 0) return std::vector<std::string>({"[Empty]"}); if (is_server && ret.size() == 0) return std::vector<std::string>({""});
return ret; return ret;
} }
case OperationType::__Klog: { case OperationType::__Klog: {
// return std::vector<std::string>({"Invalid"}); // return std::vector<std::string>({"Invalid"});
auto ret = std::move(ExecuteLog(cmd, login_stack)); auto ret = std::move(ExecuteLog(cmd, login_stack));
if (is_server && ret.size() == 0) return std::vector<std::string>({"[Empty]"}); if (is_server && ret.size() == 0) return std::vector<std::string>({""});
return ret; return ret;
} }
} }

View File

@ -48,7 +48,21 @@
operation_count++; operation_count++;
let raw_request="#Request "+session_token+" "+operation_count+" "+outhentication_key+"\n"+req; let raw_request="#Request "+session_token+" "+operation_count+" "+outhentication_key+"\n"+req;
let raw_response=await RawRequest(raw_request); 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]); 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=""; let response="";
if(line_numbers_of_res>=1) response=raw_response.split('\n')[1]; if(line_numbers_of_res>=1) response=raw_response.split('\n')[1];
for(let i=0;i<line_numbers_of_res-1;i++){ for(let i=0;i<line_numbers_of_res-1;i++){

View File

@ -84,7 +84,7 @@ backend.stdout.on('data', (data) => {
else{ else{
res_block=line+'\n'; res_block=line+'\n';
to_be_collect=parseInt(line.split(' ')[2]); 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 substrings = res_block.trim().split('\n')[0].split(' ');
const session_token=substrings[0]; const session_token=substrings[0];