diff --git a/README.md b/README.md index f783edf..7463556 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ Redis, but worse in every conceivable manner. And also my first serious C++ project. +**NOTE**: This project **requires** C++23. Make sure to compile with `g++ -std=c++23` (on linux systems) + ## Roadmap - [X] Basic K/V store - [X] Remove/add entries diff --git a/main.cpp b/main.cpp index 87160a0..7ceaab8 100644 --- a/main.cpp +++ b/main.cpp @@ -151,14 +151,14 @@ int main() { buffer[bytes_received] = '\0'; std::cout << "[i] Received: " << buffer << std::endl; std::vector parsed = parse_resp_request(buffer); - for (std::string& var: parsed) { - } + if (parsed[0] == "GET") { bool found = false; - for (const auto& inner_vec: database) { + + for (const auto& inner_vec: database) { // Iterate through DB and find the required item if (!inner_vec.empty() && inner_vec[0] == parsed[1]) { int length = inner_vec[1].length(); - std::string return_string = std::format("${}\r\n{}\r\n", length, inner_vec[1]); + std::string return_string = std::format("${}\r\n{}\r\n", length, inner_vec[1]); // Serialise to RESP std::cout << "[d] Sending: " << return_string << std::endl; send(client_socket, return_string.data(), return_string.length(), 0); found = true; @@ -166,16 +166,18 @@ int main() { } if (!found) { - send(client_socket, "$-1\r\n", strlen("$-1\r\n"), 0); + send(client_socket, "$-1\r\n", strlen("$-1\r\n"), 0); // Not found } } else if (parsed[0] == "SET") { - bool found = false; + bool found = false; // Avoids SEGFAULT + for (auto& inner_vec: database) { if (!inner_vec.empty() && inner_vec[0] == parsed[1]) { inner_vec[1] = parsed[2]; send(client_socket, "+OK\r\n", strlen("+OK\r\n"), 0); found = true; } + if (!found) { std::vector new_kv = { parsed[1], parsed[2] }; database.push_back(new_kv); @@ -184,7 +186,7 @@ int main() { } } } else { - send(client_socket, "+OK\r\n", strlen("+OK\r\n"), 0); + send(client_socket, "+OK\r\n", strlen("+OK\r\n"), 0); // Temporary catch-all (for more advanced handshake) } } else { close(client_socket);