comments & general maintainability things
This commit is contained in:
parent
a625bb55cd
commit
d6360d207a
2 changed files with 11 additions and 7 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
16
main.cpp
16
main.cpp
|
|
@ -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);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue