aboutsummaryrefslogtreecommitdiff
path: root/src/DatabaseStorage.cpp
diff options
context:
space:
mode:
authorAleksi Lindeman <0xdec05eba@gmail.com>2018-03-05 22:45:56 +0100
committerAleksi Lindeman <0xdec05eba@gmail.com>2018-03-05 22:48:26 +0100
commit2ffb47d0043e57707474e5ae811f97c2e5e93f25 (patch)
treefd60b300cdf736de5adc68b395105dcfc6a43f09 /src/DatabaseStorage.cpp
parent66661e47dc826f50b690e080057f47a0ea27016c (diff)
Implement 'create' operation, add seeding
Seeding is currently only done on the key you specify, in the future the user should request data that it can seed.
Diffstat (limited to 'src/DatabaseStorage.cpp')
-rw-r--r--src/DatabaseStorage.cpp36
1 files changed, 25 insertions, 11 deletions
diff --git a/src/DatabaseStorage.cpp b/src/DatabaseStorage.cpp
index 62a2e77..25d41fb 100644
--- a/src/DatabaseStorage.cpp
+++ b/src/DatabaseStorage.cpp
@@ -1,35 +1,49 @@
#include "../include/DatabaseStorage.hpp"
+#include <cstring>
using namespace std;
namespace odhtdb
{
- void DatabaseStorage::createStorage(const Key &key, vector<Group*> &&groups, u64 timestamp)
+ void DatabaseStorage::createStorage(const Hash &hash, Group *creatorGroup, u64 timestamp, const u8 *data, usize dataSize)
{
- if(storageMap.find(key) != storageMap.end())
+ /*
+ if(storageMap.find(hash) != storageMap.end())
{
- string errMsg = "Database storage with key ";
- errMsg += key.hashedKey.toString();
+ string errMsg = "Database storage with hash ";
+ errMsg += hash.toString();
errMsg += " already exists";
throw DatabaseStorageAlreadyExists(errMsg);
}
+ */
DatabaseStorageObjectList *databaseStorageObjectList = new DatabaseStorageObjectList();
databaseStorageObjectList->timestamp = timestamp;
- databaseStorageObjectList->groups = move(groups);
- storageMap[key] = databaseStorageObjectList;
+ databaseStorageObjectList->groups.push_back(creatorGroup);
+ databaseStorageObjectList->createData = new u8[dataSize];
+ memcpy(databaseStorageObjectList->createData, data, dataSize);
+ databaseStorageObjectList->createDataSize = dataSize;
+ storageMap[hash] = databaseStorageObjectList;
}
- void DatabaseStorage::appendStorage(const Key &key, DataView &data, u64 timestamp, const Signature::PublicKey &creatorPublicKey)
+ void DatabaseStorage::appendStorage(const Hash &hash, DataView &data, u64 timestamp, const Signature::PublicKey &creatorPublicKey)
{
- auto it = storageMap.find(key);
+ auto it = storageMap.find(hash);
if(it == storageMap.end())
{
- string errMsg = "Database storage with key ";
- errMsg += key.hashedKey.toString();
- errMsg += " not found. Storage for a key needs to be created before data can be appended to it";
+ string errMsg = "Database storage with hash ";
+ errMsg += hash.toString();
+ errMsg += " not found. Storage for a hash needs to be created before data can be appended to it";
throw DatabaseStorageNotFound(errMsg);
}
it->second->objects.push_back({data, timestamp, creatorPublicKey});
}
+
+ const DatabaseStorageObjectList* DatabaseStorage::getStorage(const Hash &hash) const
+ {
+ auto it = storageMap.find(hash);
+ if(it != storageMap.end())
+ return it->second;
+ return nullptr;
+ }
}