comments & general maintainability things

This commit is contained in:
Xory 2025-10-07 19:59:13 +03:00
parent a625bb55cd
commit d6360d207a
2 changed files with 11 additions and 7 deletions

View file

@ -3,6 +3,8 @@
Redis, but worse in every conceivable manner. Redis, but worse in every conceivable manner.
And also my first serious C++ project. 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 ## Roadmap
- [X] Basic K/V store - [X] Basic K/V store
- [X] Remove/add entries - [X] Remove/add entries

View file

@ -151,14 +151,14 @@ int main() {
buffer[bytes_received] = '\0'; buffer[bytes_received] = '\0';
std::cout << "[i] Received: " << buffer << std::endl; std::cout << "[i] Received: " << buffer << std::endl;
std::vector<std::string> parsed = parse_resp_request(buffer); std::vector<std::string> parsed = parse_resp_request(buffer);
for (std::string& var: parsed) {
}
if (parsed[0] == "GET") { if (parsed[0] == "GET") {
bool found = false; 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]) { if (!inner_vec.empty() && inner_vec[0] == parsed[1]) {
int length = inner_vec[1].length(); 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; std::cout << "[d] Sending: " << return_string << std::endl;
send(client_socket, return_string.data(), return_string.length(), 0); send(client_socket, return_string.data(), return_string.length(), 0);
found = true; found = true;
@ -166,16 +166,18 @@ int main() {
} }
if (!found) { 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") { } else if (parsed[0] == "SET") {
bool found = false; bool found = false; // Avoids SEGFAULT
for (auto& inner_vec: database) { for (auto& inner_vec: database) {
if (!inner_vec.empty() && inner_vec[0] == parsed[1]) { if (!inner_vec.empty() && inner_vec[0] == parsed[1]) {
inner_vec[1] = parsed[2]; inner_vec[1] = parsed[2];
send(client_socket, "+OK\r\n", strlen("+OK\r\n"), 0); send(client_socket, "+OK\r\n", strlen("+OK\r\n"), 0);
found = true; found = true;
} }
if (!found) { if (!found) {
std::vector<std::string> new_kv = { parsed[1], parsed[2] }; std::vector<std::string> new_kv = { parsed[1], parsed[2] };
database.push_back(new_kv); database.push_back(new_kv);
@ -184,7 +186,7 @@ int main() {
} }
} }
} else { } 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 { } else {
close(client_socket); close(client_socket);