Add infrastructure for asynchronous storage operations

This commit is contained in:
Tim Wojtulewicz 2024-12-06 16:05:23 -07:00
parent d07d27453a
commit 7ad6a05f5b
8 changed files with 251 additions and 49 deletions

View file

@ -37,7 +37,7 @@ void StorageDummy::Close() { open = false; }
* The workhorse method for Put(). This must be implemented by plugins.
*/
zeek::storage::ErrorResult StorageDummy::DoPut(zeek::ValPtr key, zeek::ValPtr value, bool overwrite,
double expiration_time) {
double expiration_time, zeek::storage::ErrorResultCallback* cb) {
auto json_key = key->ToJSON()->ToStdString();
auto json_value = value->ToJSON()->ToStdString();
data[json_key] = json_value;
@ -47,7 +47,7 @@ zeek::storage::ErrorResult StorageDummy::DoPut(zeek::ValPtr key, zeek::ValPtr va
/**
* The workhorse method for Get(). This must be implemented for plugins.
*/
zeek::storage::ValResult StorageDummy::DoGet(zeek::ValPtr key) {
zeek::storage::ValResult StorageDummy::DoGet(zeek::ValPtr key, zeek::storage::ValResultCallback* cb) {
auto json_key = key->ToJSON();
auto it = data.find(json_key->ToStdString());
if ( it == data.end() )
@ -65,7 +65,7 @@ zeek::storage::ValResult StorageDummy::DoGet(zeek::ValPtr key) {
/**
* The workhorse method for Erase(). This must be implemented for plugins.
*/
zeek::storage::ErrorResult StorageDummy::DoErase(zeek::ValPtr key) {
zeek::storage::ErrorResult StorageDummy::DoErase(zeek::ValPtr key, zeek::storage::ErrorResultCallback* cb) {
auto json_key = key->ToJSON();
auto it = data.find(json_key->ToStdString());
if ( it == data.end() )

View file

@ -13,7 +13,7 @@ namespace btest::storage::backend {
*/
class StorageDummy : public zeek::storage::Backend {
public:
StorageDummy(std::string_view tag) : Backend(tag) {}
StorageDummy(std::string_view tag) : Backend(false, tag) {}
~StorageDummy() override = default;
static zeek::storage::BackendPtr Instantiate(std::string_view tag);
@ -37,17 +37,18 @@ public:
* The workhorse method for Put().
*/
zeek::storage::ErrorResult DoPut(zeek::ValPtr key, zeek::ValPtr value, bool overwrite = true,
double expiration_time = 0) override;
double expiration_time = 0,
zeek::storage::ErrorResultCallback* cb = nullptr) override;
/**
* The workhorse method for Get().
*/
zeek::storage::ValResult DoGet(zeek::ValPtr key) override;
zeek::storage::ValResult DoGet(zeek::ValPtr key, zeek::storage::ValResultCallback* cb = nullptr) override;
/**
* The workhorse method for Erase().
*/
zeek::storage::ErrorResult DoErase(zeek::ValPtr key) override;
zeek::storage::ErrorResult DoErase(zeek::ValPtr key, zeek::storage::ErrorResultCallback* cb = nullptr) override;
private:
std::map<std::string, std::string> data;