From 162ee2076d294081241457893691d76f009f42b7 Mon Sep 17 00:00:00 2001 From: g2px1 Date: Sun, 27 Apr 2025 18:32:35 +0000 Subject: [PATCH] fixed serializing/deserializing --- core/Command.cpp | 21 ++++++++++----------- main.cpp | 7 ------- 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/core/Command.cpp b/core/Command.cpp index 334d622..ea685e8 100644 --- a/core/Command.cpp +++ b/core/Command.cpp @@ -45,30 +45,29 @@ namespace usub::core { } void Command::serialize(std::ostream &out) const { - auto op_val = static_cast(op); + auto op_val = static_cast(this->op); out.write(reinterpret_cast(&op_val), sizeof(op_val)); - out.write(reinterpret_cast(&key), sizeof(key)); - out.write(reinterpret_cast(&value_size), sizeof(value_size)); - out.write(value, value_size); - out.write(reinterpret_cast(&response_size), sizeof(response_size)); - out.write(response, response_size); + out.write(reinterpret_cast(&this->key), sizeof(this->key)); + out.write(reinterpret_cast(&this->value_size), sizeof(this->value_size)); + out.write(this->value, sizeof(this->value)); + out.write(reinterpret_cast(&this->response_size), sizeof(this->response_size)); + out.write(this->response, sizeof(this->response)); } Command Command::deserialize(std::istream &in) { Command cmd; - uint8_t op_val; + uint8_t op_val = 0; in.read(reinterpret_cast(&op_val), sizeof(op_val)); cmd.op = static_cast(op_val); in.read(reinterpret_cast(&cmd.key), sizeof(cmd.key)); + in.read(reinterpret_cast(&cmd.value_size), sizeof(cmd.value_size)); - if (cmd.value_size > 0) - in.read(cmd.value, cmd.value_size); + in.read(cmd.value, sizeof(cmd.value)); in.read(reinterpret_cast(&cmd.response_size), sizeof(cmd.response_size)); - if (cmd.response_size > 0) - in.read(cmd.response, cmd.response_size); + in.read(cmd.response, sizeof(cmd.response)); cmd.ready.store(1, std::memory_order_relaxed); cmd.response_ready.store(1, std::memory_order_relaxed); diff --git a/main.cpp b/main.cpp index f1bffe4..911d679 100644 --- a/main.cpp +++ b/main.cpp @@ -94,13 +94,6 @@ int main() { using namespace usub::core; usub::core::DatabaseManager manager("../config.toml"); manager.run_all(); - -// std::cout << sizeof(usub::core::SharedCommandQueue) << ", " << SharedCommandQueue::calculate_shm_size(1024) << "\n"; -// usub::core::SharedMemoryManager shm_manager{"rates_1", SharedCommandQueue::calculate_shm_size(1024)}; -// new(shm_manager.base_ptr()) SharedCommandQueue(1024); -// auto* queue = static_cast(shm_manager.base_ptr()); -// auto* cmd = queue->peek(0); -// std::cout << cmd->ready.load() << '\n'; } catch (const std::exception &ex) { std::cerr << "Fatal error: " << ex.what() << std::endl;