diff --git a/backend/include/bs-utility.h b/backend/include/bs-utility.h index c35b051..2edb877 100644 --- a/backend/include/bs-utility.h +++ b/backend/include/bs-utility.h @@ -55,7 +55,7 @@ BlockingStringStream &BlockingStringStream::operator<<(const T &val) { } internalStream << val; } - condition.notify_one(); + condition.notify_all(); return *this; } diff --git a/backend/src/bs-utility.cpp b/backend/src/bs-utility.cpp index 5d7c48d..5ad4813 100644 --- a/backend/src/bs-utility.cpp +++ b/backend/src/bs-utility.cpp @@ -8,7 +8,7 @@ BlockingStringStream &BlockingStringStream::getline(std::string &str, condition.wait(lock, [this] { return internalStream.peek() != EOF && !is_writing; }); - + str = ""; std::getline(internalStream, str, delim); return *this; @@ -53,4 +53,7 @@ void debugPrint() { } void BlockingStringStream::readlock() { is_writing = true; } -void BlockingStringStream::unreadlock() { is_writing = false; } \ No newline at end of file +void BlockingStringStream::unreadlock() { + is_writing = false; + condition.notify_all(); +} \ No newline at end of file diff --git a/backend/src/builtin-cli.cpp b/backend/src/builtin-cli.cpp index 3821081..be59d2d 100644 --- a/backend/src/builtin-cli.cpp +++ b/backend/src/builtin-cli.cpp @@ -18,8 +18,8 @@ void BookStoreMain(bool is_server, std::string config_dir) { std::string SessionToken, AuthenticationKey, tmp; output.getline(tmp); output >> SessionToken >> AuthenticationKey; - debugPrint("SessionToken=", SessionToken, - " AuthenticationKey=", AuthenticationKey); + // debugPrint("SessionToken=", SessionToken, + // " AuthenticationKey=", AuthenticationKey); std::string cmd; output.getline(tmp); while (getline(std::cin, cmd)) { @@ -36,6 +36,7 @@ void BookStoreMain(bool is_server, std::string config_dir) { input << "#Request " << SessionToken << " I-T-D" << ++cnt << " " << AuthenticationKey << ' ' << cmd << '\n'; input.unreadlock(); + // debugPrint("Sent Request ", cnt, " cmd=", cmd); std::string SessionToken; std::string OperationToken; int LineCounter; @@ -47,7 +48,9 @@ void BookStoreMain(bool is_server, std::string config_dir) { for (int i = 0; i < LineCounter; i++) { output.getline(tmp); std::cout << tmp << std::endl; + // std::cerr << tmp << std::endl; } + std::cout.flush(); } input.readlock(); input << "#CloseSession " << SessionToken << ' ' << AuthenticationKey diff --git a/backend/src/schedule.cpp b/backend/src/schedule.cpp index 9b95546..5e58d84 100644 --- a/backend/src/schedule.cpp +++ b/backend/src/schedule.cpp @@ -11,7 +11,7 @@ void BookStoreBackEndClass::Run() { std::mt19937 rnd(RndSeed); while (true) { input_ptr->getline(request_data, '\n'); - debugPrint("request_data=", request_data); + // debugPrint("request_data=", request_data); if (request_data[1] == 'O') // #OpenSession [TempChannelID] { std::stringstream ss; @@ -37,7 +37,7 @@ void BookStoreBackEndClass::Run() { } else if (request_data[1] == '_') { ; } else if (request_data[1] == 'S') { - ; + return; } else if (request_data[1] == 'R') { std::stringstream ss(request_data); std::string SessionToken; @@ -50,12 +50,11 @@ void BookStoreBackEndClass::Run() { // debugPrint("SessionToken=", SessionToken, // " OperationToken=", OperationToken, // " OuthenticationKey=", OuthenticationKey, " cmd=", cmd); - // std::cerr << "[]" << SessionToken << ' ' << OperationToken - // << " 1\nECHO: " << cmd << '\n'; (*output_ptr).readlock(); - (*output_ptr) << SessionToken << ' ' << OperationToken - << " 1\nECHO: " << cmd << '\n'; + (*output_ptr) << SessionToken << ' ' << OperationToken << " 1\n" + << cmd << '\n'; (*output_ptr).unreadlock(); + // debugPrint(SessionToken, ' ', OperationToken, " 1\n", cmd); } } } \ No newline at end of file