From a9a7ecaa25e6bc11062e21affd458e2de78747ff Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sat, 10 Feb 2018 19:36:35 +0100 Subject: Fix put not working because used time discards message before received --- src/Database.cpp | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) (limited to 'src/Database.cpp') diff --git a/src/Database.cpp b/src/Database.cpp index f0c7b04..cd87845 100644 --- a/src/Database.cpp +++ b/src/Database.cpp @@ -104,17 +104,21 @@ namespace odhtdb // TODO: Combine staged objects into one object for efficiency. // TODO: Add rollback + printf("Num objects to create: %d\n", stagedCreateObjects.size()); for(StagedCreateObject &stagedObject : stagedCreateObjects) { commitStagedCreateObject(stagedObject); } stagedCreateObjects.clear(); + printf("Num objects to add: %d\n", stagedAddObjects.size()); for(StagedAddObject &stagedObject : stagedAddObjects) { commitStagedAddObject(stagedObject); } stagedAddObjects.clear(); + + // TODO: Add node.listen here to get notified when remote peers got the commit, then we can say we can return } void Database::commitStagedCreateObject(const StagedCreateObject &stagedObject) @@ -143,7 +147,7 @@ namespace odhtdb // TODO: Handle failure to put data if(!ok) fprintf(stderr, "Failed to put: %s, what to do?\n", "commitStagedCreateObject"); - }, time_point(), false); + }/* TODO: How to make this work?, time_point(), false*/); // Post data for listeners of this key Value putKeyValue(serializer.getBuffer().data() + OPENDHT_INFOHASH_LEN, serializer.getBuffer().size() - OPENDHT_INFOHASH_LEN); @@ -152,7 +156,7 @@ namespace odhtdb // TODO: Handle failure to put data if(!ok) fprintf(stderr, "Failed to put for listeners: %s, what to do?\n", "commitStagedCreateObject"); - }, time_point(), false); + }); } void Database::commitStagedAddObject(const StagedAddObject &stagedObject) @@ -242,36 +246,32 @@ namespace odhtdb return result; } - bool Database::listenCreateData(const std::vector> &values) + bool Database::listenCreateData(std::shared_ptr value) { - for(const shared_ptr &value : values) + printf("Got create data\n"); + try { - try - { - // TODO: Verify createObject timestamp is not in the future - StagedCreateObject createObject = deserializeCreateRequest(value); - delete createObject.primaryAdminGroup; - } - catch (sibs::DeserializeException &e) - { - fprintf(stderr, "Warning: Failed to deserialize 'create' request: %s\n", e.what()); - } + // TODO: Verify createObject timestamp is not in the future + StagedCreateObject createObject = deserializeCreateRequest(value); + delete createObject.primaryAdminGroup; + } + catch (sibs::DeserializeException &e) + { + fprintf(stderr, "Warning: Failed to deserialize 'create' request: %s\n", e.what()); } return true; } - bool Database::listenAddData(const std::vector> &values) + bool Database::listenAddData(std::shared_ptr value) { - for(const shared_ptr &value : values) + printf("Got add data\n"); + try { - try - { - StagedAddObject addObject = deserializeAddRequest(value); - } - catch (sibs::DeserializeException &e) - { - fprintf(stderr, "Warning: Failed to deserialize 'add' request: %s\n", e.what()); - } + StagedAddObject addObject = deserializeAddRequest(value); + } + catch (sibs::DeserializeException &e) + { + fprintf(stderr, "Warning: Failed to deserialize 'add' request: %s\n", e.what()); } return true; } -- cgit v1.2.3