diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 24bd59a..b70c3e9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -11,12 +11,15 @@ add_library(fragment_store ./fragment_store/fragment_store.cpp ./json/message_components.hpp # TODO: move + ./json/tox_message_components.hpp # TODO: move ) target_link_libraries(fragment_store PUBLIC nlohmann_json::nlohmann_json EnTT::EnTT solanaceae_util + + solanaceae_tox_messages # TODO: move ) ######################################## @@ -26,6 +29,11 @@ add_library(message_fragment_store ./fragment_store/message_serializer.cpp ./fragment_store/message_fragment_store.hpp ./fragment_store/message_fragment_store.cpp + + ./fragment_store/register_mfs_json_message_components.hpp + ./fragment_store/register_mfs_json_message_components.cpp + ./fragment_store/register_mfs_json_tox_message_components.hpp + ./fragment_store/register_mfs_json_tox_message_components.cpp ) target_compile_features(message_fragment_store PRIVATE cxx_std_20) target_link_libraries(message_fragment_store PUBLIC diff --git a/src/fragment_store/fragment_store.cpp b/src/fragment_store/fragment_store.cpp index 98a08e0..1776f27 100644 --- a/src/fragment_store/fragment_store.cpp +++ b/src/fragment_store/fragment_store.cpp @@ -305,7 +305,7 @@ bool FragmentStore::syncToStorage(FragmentID fid, std::function()) { + if (other_msg == new_real_msg) { + continue; // skip self + } + if (comp({reg, other_msg}, new_real_msg)) { // dup dup_msg = other_msg; @@ -281,34 +285,6 @@ MessageFragmentStore::MessageFragmentStore( _fs._sc.registerSerializerJson(); _fs._sc.registerDeSerializerJson(); - _sc.registerSerializerJson(); - _sc.registerDeSerializerJson(); - _sc.registerSerializerJson(); - _sc.registerDeSerializerJson(); - _sc.registerSerializerJson(); - _sc.registerDeSerializerJson(); - _sc.registerSerializerJson(); - _sc.registerDeSerializerJson(); - _sc.registerSerializerJson(); - _sc.registerDeSerializerJson(); - _sc.registerSerializerJson(); - _sc.registerDeSerializerJson(); - _sc.registerSerializerJson(); - _sc.registerDeSerializerJson(); - _sc.registerSerializerJson(); - _sc.registerDeSerializerJson(); - _sc.registerSerializerJson(); - _sc.registerDeSerializerJson(); - - // files - //_sc.registerSerializerJson() - //_sc.registerSerializerJson(); - //_sc.registerDeSerializerJson(); - //_sc.registerSerializerJson(); - //_sc.registerDeSerializerJson(); - //_sc.registerSerializerJson(); - //_sc.registerDeSerializerJson(); - _fs.subscribe(this, FragmentStore_Event::fragment_construct); } @@ -316,6 +292,10 @@ MessageFragmentStore::~MessageFragmentStore(void) { // TODO: sync all dirty fragments } +MessageSerializerCallbacks& MessageFragmentStore::getMSC(void) { + return _sc; +} + float MessageFragmentStore::tick(float time_delta) { // sync dirty fragments here @@ -351,13 +331,13 @@ float MessageFragmentStore::tick(float time_delta) { continue; } - std::cout << "storage type: type_id:" << type_id << " name:" << storage.type().name() << "\n"; + //std::cout << "storage type: type_id:" << type_id << " name:" << storage.type().name() << "\n"; // use type_id to find serializer auto s_cb_it = _sc._serl_json.find(type_id); if (s_cb_it == _sc._serl_json.end()) { // could not find serializer, not saving - std::cout << "missing " << storage.type().name() << "\n"; + std::cout << "missing " << storage.type().name() << "(" << type_id << ")\n"; continue; } diff --git a/src/fragment_store/message_fragment_store.hpp b/src/fragment_store/message_fragment_store.hpp index cc60870..b61fe9a 100644 --- a/src/fragment_store/message_fragment_store.hpp +++ b/src/fragment_store/message_fragment_store.hpp @@ -71,6 +71,8 @@ class MessageFragmentStore : public RegistryMessageModelEventI, public FragmentS ); virtual ~MessageFragmentStore(void); + MessageSerializerCallbacks& getMSC(void); + float tick(float time_delta); void triggerScan(void); diff --git a/src/fragment_store/register_mfs_json_message_components.cpp b/src/fragment_store/register_mfs_json_message_components.cpp new file mode 100644 index 0000000..ed6bda6 --- /dev/null +++ b/src/fragment_store/register_mfs_json_message_components.cpp @@ -0,0 +1,35 @@ +#include "./register_mfs_json_message_components.hpp" + +#include "./message_serializer.hpp" +#include "../json/message_components.hpp" + +void registerMFSJsonMessageComponents(MessageSerializerCallbacks& msc) { + msc.registerSerializerJson(); + msc.registerDeSerializerJson(); + msc.registerSerializerJson(); + msc.registerDeSerializerJson(); + msc.registerSerializerJson(); + msc.registerDeSerializerJson(); + msc.registerSerializerJson(); + msc.registerDeSerializerJson(); + msc.registerSerializerJson(); + msc.registerDeSerializerJson(); + msc.registerSerializerJson(); + msc.registerDeSerializerJson(); + msc.registerSerializerJson(); + msc.registerDeSerializerJson(); + msc.registerSerializerJson(); + msc.registerDeSerializerJson(); + msc.registerSerializerJson(); + msc.registerDeSerializerJson(); + + // files + //_sc.registerSerializerJson() + //_sc.registerSerializerJson(); + //_sc.registerDeSerializerJson(); + //_sc.registerSerializerJson(); + //_sc.registerDeSerializerJson(); + //_sc.registerSerializerJson(); + //_sc.registerDeSerializerJson(); +} + diff --git a/src/fragment_store/register_mfs_json_message_components.hpp b/src/fragment_store/register_mfs_json_message_components.hpp new file mode 100644 index 0000000..5efef28 --- /dev/null +++ b/src/fragment_store/register_mfs_json_message_components.hpp @@ -0,0 +1,6 @@ +#pragma once + +#include "./message_serializer.hpp" + +void registerMFSJsonMessageComponents(MessageSerializerCallbacks& msc); + diff --git a/src/fragment_store/register_mfs_json_tox_message_components.cpp b/src/fragment_store/register_mfs_json_tox_message_components.cpp new file mode 100644 index 0000000..83b7dad --- /dev/null +++ b/src/fragment_store/register_mfs_json_tox_message_components.cpp @@ -0,0 +1,10 @@ +#include "./register_mfs_json_message_components.hpp" + +#include "./message_serializer.hpp" +#include "../json/tox_message_components.hpp" + +void registerMFSJsonToxMessageComponents(MessageSerializerCallbacks& msc) { + msc.registerSerializerJson(); + msc.registerDeSerializerJson(); +} + diff --git a/src/fragment_store/register_mfs_json_tox_message_components.hpp b/src/fragment_store/register_mfs_json_tox_message_components.hpp new file mode 100644 index 0000000..fdf86bc --- /dev/null +++ b/src/fragment_store/register_mfs_json_tox_message_components.hpp @@ -0,0 +1,6 @@ +#pragma once + +#include "./message_serializer.hpp" + +void registerMFSJsonToxMessageComponents(MessageSerializerCallbacks& msc); + diff --git a/src/json/tox_message_components.hpp b/src/json/tox_message_components.hpp new file mode 100644 index 0000000..09ebbdc --- /dev/null +++ b/src/json/tox_message_components.hpp @@ -0,0 +1,16 @@ +#pragma once + +#include + +#include + +#include + +namespace Message::Components { + + // TODO: friend msg id, does not have the same qualities + NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(ToxGroupMessageID, id) + // TODO: transfer stuff, needs content rewrite + +} // Message::Components + diff --git a/src/main_screen.cpp b/src/main_screen.cpp index ba61d9c..29ff026 100644 --- a/src/main_screen.cpp +++ b/src/main_screen.cpp @@ -1,5 +1,7 @@ #include "./main_screen.hpp" -#include "fragment_store/fragment_store.hpp" + +#include "./fragment_store/register_mfs_json_message_components.hpp" +#include "./fragment_store/register_mfs_json_tox_message_components.hpp" #include @@ -35,6 +37,8 @@ MainScreen::MainScreen(SDL_Renderer* renderer_, std::string save_path, std::stri tdch(tpi) { tel.subscribeAll(tc); + registerMFSJsonMessageComponents(mfs.getMSC()); + registerMFSJsonToxMessageComponents(mfs.getMSC()); conf.set("tox", "save_file_path", save_path);