From fa8d14018891d90e23fce0e510a01728970932f2 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Mon, 14 May 2018 22:25:26 +0200 Subject: Implement node load/fetch order --- src/Database.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'src/Database.cpp') diff --git a/src/Database.cpp b/src/Database.cpp index ddef6d1..93dec99 100644 --- a/src/Database.cpp +++ b/src/Database.cpp @@ -170,7 +170,7 @@ namespace odhtdb u64 range; }; - void Database::seed(const DatabaseNode &nodeToSeed) + void Database::seed(const DatabaseNode &nodeToSeed, DatabaseFetchOrder fetchOrder) { if(seedInfoMap.find(*nodeToSeed.getRequestHash()) != seedInfoMap.end()) { @@ -208,7 +208,7 @@ namespace odhtdb newSeedInfo.reponseKeyInfoHash = responseKeyShared; // TODO: If this response key is spammed, generate a new one. - auto responseKeyFuture = node.listen(*newSeedInfo.reponseKeyInfoHash, [this, nodeToSeed](const shared_ptr &value) + auto responseKeyFuture = node.listen(*responseKeyShared, [this, nodeToSeed](const shared_ptr &value) { const Hash requestHash(value->data.data(), value->data.size()); if(requestHash == *nodeToSeed.getRequestHash()) @@ -233,6 +233,7 @@ namespace odhtdb return true; // We sent the request, ignore our own requests bool userWantsCreateNode = deserializer.extract() == 1; + DatabaseFetchOrder fetchOrder = deserializer.extract(); if(userWantsCreateNode) { @@ -287,7 +288,7 @@ namespace odhtdb if(!ok) Log::error("Failed to put response for old data for 'add' data"); }); - }); + }, fetchOrder); } catch (std::exception &e) { @@ -302,6 +303,7 @@ namespace odhtdb serializer.add(responseKey, OPENDHT_INFOHASH_LEN); bool iHaveCreateNode = databaseStorage.doesNodeExist(*nodeToSeed.getRequestHash()); serializer.add(iHaveCreateNode ? (u8)0 : (u8)1); + serializer.add(fetchOrder); DataViewMap userLatestActionCounter; databaseStorage.fetchNodeUserActionGaps(*nodeToSeed.getRequestHash(), [&serializer, &userLatestActionCounter](const DataView userPublicKey, u64 actionGapStart, u64 actionGapRange) @@ -349,9 +351,9 @@ namespace odhtdb } } - void Database::loadNode(const Hash &nodeHash) + void Database::loadNode(const Hash &nodeHash, DatabaseLoadOrder loadOrder) { - databaseStorage.loadNode(nodeHash); + databaseStorage.loadNode(nodeHash, loadOrder); } unique_ptr Database::create() -- cgit v1.2.3