os backend refactor

This commit is contained in:
Green Sky 2025-01-18 01:53:46 +01:00
parent 09300c1702
commit d91ad4bfa9
No known key found for this signature in database
3 changed files with 15 additions and 13 deletions

View File

@ -11,20 +11,23 @@ namespace Backends {
ToxFTFilesystem::ToxFTFilesystem( ToxFTFilesystem::ToxFTFilesystem(
ObjectStore2& os ObjectStore2& os
) : StorageBackendI::StorageBackendI(os) { ) : _os(os) {
} }
ToxFTFilesystem::~ToxFTFilesystem(void) { ToxFTFilesystem::~ToxFTFilesystem(void) {
} }
ObjectHandle ToxFTFilesystem::newObject(ByteSpan id) { ObjectHandle ToxFTFilesystem::newObject(ByteSpan id, bool throw_construct) {
ObjectHandle o{_os.registry(), _os.registry().create()}; ObjectHandle o{_os.registry(), _os.registry().create()};
o.emplace<ObjComp::Ephemeral::Backend>(this); o.emplace<ObjComp::Ephemeral::BackendMeta>(this);
o.emplace<ObjComp::Ephemeral::BackendFile2>(this);
o.emplace<ObjComp::ID>(std::vector<uint8_t>{id}); o.emplace<ObjComp::ID>(std::vector<uint8_t>{id});
//o.emplace<ObjComp::Ephemeral::FilePath>(object_file_path.generic_u8string()); //o.emplace<ObjComp::Ephemeral::FilePath>(object_file_path.generic_u8string());
_os.throwEventConstruct(o); if (throw_construct) {
_os.throwEventConstruct(o);
}
return o; return o;
} }

View File

@ -4,13 +4,15 @@
namespace Backends { namespace Backends {
struct ToxFTFilesystem : public StorageBackendI { struct ToxFTFilesystem : public StorageBackendIMeta, public StorageBackendIFile2 {
ObjectStore2& _os;
ToxFTFilesystem( ToxFTFilesystem(
ObjectStore2& os ObjectStore2& os
); );
~ToxFTFilesystem(void); ~ToxFTFilesystem(void);
ObjectHandle newObject(ByteSpan id) override; ObjectHandle newObject(ByteSpan id, bool throw_construct = true) override;
std::unique_ptr<File2I> file2(Object o, FILE2_FLAGS flags) override; std::unique_ptr<File2I> file2(Object o, FILE2_FLAGS flags) override;
}; };

View File

@ -11,6 +11,8 @@
#include <solanaceae/message3/components.hpp> #include <solanaceae/message3/components.hpp>
#include "./msg_components.hpp" #include "./msg_components.hpp"
#include "./obj_components.hpp" #include "./obj_components.hpp"
#include "solanaceae/object_store/meta_components.hpp"
#include "solanaceae/util/span.hpp"
#include <sodium.h> #include <sodium.h>
@ -146,8 +148,7 @@ Message3Handle ToxTransferManager::toxSendFilePath(const Contact3 c, uint32_t fi
return {}; return {};
} }
// TODO: move this to backend auto o = _ftb.newObject(ByteSpan{file_id}, false);
ObjectHandle o {_os.registry(), _os.registry().create()};
o.emplace<ObjComp::F::TagLocalHaveAll>(); o.emplace<ObjComp::F::TagLocalHaveAll>();
o.emplace<ObjComp::Tox::TagOutgoing>(); o.emplace<ObjComp::Tox::TagOutgoing>();
@ -159,8 +160,6 @@ Message3Handle ToxTransferManager::toxSendFilePath(const Contact3 c, uint32_t fi
o.emplace<ObjComp::F::SingleInfoLocal>(std::string{file_path}); o.emplace<ObjComp::F::SingleInfoLocal>(std::string{file_path});
o.emplace<ObjComp::Ephemeral::FilePath>(std::string{file_path}); // ? o.emplace<ObjComp::Ephemeral::FilePath>(std::string{file_path}); // ?
o.emplace<ObjComp::Ephemeral::Backend>(&_ftb);
o.emplace<ObjComp::Ephemeral::File::TransferStats>(); o.emplace<ObjComp::Ephemeral::File::TransferStats>();
// TODO: replace with better state tracking // TODO: replace with better state tracking
@ -507,7 +506,7 @@ bool ToxTransferManager::onToxEvent(const Tox_Event_File_Recv* e) {
auto self_c = _cr.get<Contact::Components::Self>(c).self; auto self_c = _cr.get<Contact::Components::Self>(c).self;
o = {_os.registry(), _os.registry().create()}; o = _ftb.newObject(ByteSpan{f_id_opt.value()}, false);
o.emplace<ObjComp::Tox::TagIncomming>(); o.emplace<ObjComp::Tox::TagIncomming>();
o.emplace<ObjComp::Ephemeral::File::TagTransferPaused>(); o.emplace<ObjComp::Ephemeral::File::TagTransferPaused>();
@ -521,8 +520,6 @@ bool ToxTransferManager::onToxEvent(const Tox_Event_File_Recv* e) {
o.emplace<ObjComp::Ephemeral::File::TransferStats>(); o.emplace<ObjComp::Ephemeral::File::TransferStats>();
o.emplace<ObjComp::Ephemeral::Backend>(&_ftb);
toxFriendLookupAdd(o); toxFriendLookupAdd(o);
Message3Handle msg = {*reg_ptr, reg_ptr->create()}; Message3Handle msg = {*reg_ptr, reg_ptr->create()};