diff --git a/src/fragment_store/message_fragment_store.cpp b/src/fragment_store/message_fragment_store.cpp index 08fc47d5..8d899a85 100644 --- a/src/fragment_store/message_fragment_store.cpp +++ b/src/fragment_store/message_fragment_store.cpp @@ -12,23 +12,31 @@ namespace Message::Components { -// ctx -struct OpenFragments { - struct OpenFrag final { - uint64_t ts_begin {0}; - uint64_t ts_end {0}; - std::vector uid; + // ctx + struct OpenFragments { + struct OpenFrag final { + uint64_t ts_begin {0}; + uint64_t ts_end {0}; + std::vector uid; + }; + // only contains fragments with <1024 messages and <28h tsrage + // TODO: this needs to move into the message reg + std::vector fuid_open; }; - // only contains fragments with <1024 messages and <28h tsrage - // TODO: this needs to move into the message reg - std::vector fuid_open; -}; -NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Timestamp, ts) -NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(ContactFrom, c) -NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(ContactTo, c) -NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(MessageText, text) -//NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(TagMessageIsAction, void) + NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Timestamp, ts) + NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(TimestampProcessed, ts) + NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(TimestampWritten, ts) + NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(ContactFrom, c) + NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(ContactTo, c) + NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Read, ts) + NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(MessageText, text) + + namespace Transfer { + NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(FileInfo::FileDirEntry, file_name, file_size) + NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(FileInfo, file_list, total_size) + NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(FileInfoLocal, file_list) + } // Transfer } // Message::Components @@ -179,16 +187,20 @@ MessageFragmentStore::MessageFragmentStore( _fs._sc.registerSerializerJson(serl_json_msg_ts_range); _sc.registerSerializerJson(serl_json_default); + _sc.registerSerializerJson(serl_json_default); + _sc.registerSerializerJson(serl_json_default); _sc.registerSerializerJson(serl_json_default); _sc.registerSerializerJson(serl_json_default); + _sc.registerSerializerJson(serl_json_default); + _sc.registerSerializerJson(serl_json_default); _sc.registerSerializerJson(serl_json_default); _sc.registerSerializerJson(serl_json_default); // files //_sc.registerSerializerJson() - //_sc.registerSerializerJson(); - //_sc.registerSerializerJson(); - //_sc.registerSerializerJson(); + _sc.registerSerializerJson(serl_json_default); + _sc.registerSerializerJson(serl_json_default); + _sc.registerSerializerJson(serl_json_default); } MessageFragmentStore::~MessageFragmentStore(void) { @@ -228,6 +240,7 @@ float MessageFragmentStore::tick(float time_delta) { 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"; continue; } diff --git a/src/fragment_store/message_fragment_store.hpp b/src/fragment_store/message_fragment_store.hpp index 8c3f35d7..d7112a59 100644 --- a/src/fragment_store/message_fragment_store.hpp +++ b/src/fragment_store/message_fragment_store.hpp @@ -31,6 +31,10 @@ namespace Fragment::Components { }; } // Fragment::Components +struct MessageSerializerCallbacks : public SerializerCallbacks { + // TODO: add contact and message reg, so entities can be looked up and be converted to fragment uids OR persistent ids +}; + // handles fragments for messages // on new message: assign fuid // on new and update: mark as fragment dirty @@ -41,7 +45,7 @@ class MessageFragmentStore : public RegistryMessageModelEventI { FragmentStore& _fs; // for message components only - SerializerCallbacks _sc; + MessageSerializerCallbacks _sc; void handleMessage(const Message3Handle& m);