#include "BookmarkListItem.hpp" #include using namespace NetworkingObjects; BookmarkListItem::BookmarkListItem() {} BookmarkListItem::BookmarkListItem(NetworkingObjects::NetObjManager& netObjMan, const std::string& initName, bool isFolder, const BookmarkData& initBookmarkData) { name = initName; if(isFolder) folderList = netObjMan.make_obj>(); else bookmarkData = std::make_unique(initBookmarkData); } bool BookmarkListItem::is_folder() const { return folderList; } const BookmarkData& BookmarkListItem::get_bookmark_data() const { return *bookmarkData; } const NetObjOwnerPtr>& BookmarkListItem::get_folder_list() const { return folderList; } const std::string& BookmarkListItem::get_name() const { return name; } void BookmarkListItem::set_name(const NetworkingObjects::NetObjTemporaryPtr& o, const std::string& newName) { o->name = newName; o.send_update_to_all(RELIABLE_COMMAND_CHANNEL, [](const NetObjTemporaryPtr& o, cereal::PortableBinaryOutputArchive& a) { a(o->name); }); } void BookmarkListItem::register_class(NetObjManager& netObjMan) { netObjMan.register_class({ .writeConstructorFuncClient = write_constructor_data, .readConstructorFuncClient = read_constructor_data, .readUpdateFuncClient = [](const NetObjTemporaryPtr& o, cereal::PortableBinaryInputArchive& a, const std::shared_ptr&) { a(o->name); }, .writeConstructorFuncServer = write_constructor_data, .readConstructorFuncServer = read_constructor_data, .readUpdateFuncServer = [](const NetObjTemporaryPtr& o, cereal::PortableBinaryInputArchive& a, const std::shared_ptr&) { a(o->name); o.send_server_update_to_all_clients(RELIABLE_COMMAND_CHANNEL, [](const NetObjTemporaryPtr& o, cereal::PortableBinaryOutputArchive& a) { a(o->name); }); }, }); } void BookmarkListItem::write_constructor_data(const NetObjTemporaryPtr& o, cereal::PortableBinaryOutputArchive& a) { a(o->name, o->is_folder()); if(o->is_folder()) o->folderList.write_create_message(a); else a(*o->bookmarkData); } void BookmarkListItem::read_constructor_data(const NetworkingObjects::NetObjTemporaryPtr& o, cereal::PortableBinaryInputArchive& a, const std::shared_ptr& c) { a(o->name); bool isFolder; a(isFolder); if(isFolder) o->folderList = o.get_obj_man()->read_create_message>(a, c); else { o->bookmarkData = std::make_unique(); a(*o->bookmarkData); } }