aboutsummaryrefslogtreecommitdiffstats
path: root/searchcore/src/apps/vespa-feed-bm/storage_api_rpc_bm_feed_handler.h
diff options
context:
space:
mode:
Diffstat (limited to 'searchcore/src/apps/vespa-feed-bm/storage_api_rpc_bm_feed_handler.h')
-rw-r--r--searchcore/src/apps/vespa-feed-bm/storage_api_rpc_bm_feed_handler.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/searchcore/src/apps/vespa-feed-bm/storage_api_rpc_bm_feed_handler.h b/searchcore/src/apps/vespa-feed-bm/storage_api_rpc_bm_feed_handler.h
new file mode 100644
index 00000000000..0fe92350eb2
--- /dev/null
+++ b/searchcore/src/apps/vespa-feed-bm/storage_api_rpc_bm_feed_handler.h
@@ -0,0 +1,43 @@
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include "i_bm_feed_handler.h"
+
+namespace document { class DocumentTypeRepo; }
+namespace storage::api {
+class StorageMessageAddress;
+class StorageCommand;
+}
+
+namespace storage::rpc {
+class MessageCodecProvider;
+class SharedRpcResources;
+class StorageApiRpcService;
+}
+
+namespace feedbm {
+
+/*
+ * Benchmark feed handler for feed to service layer using storage api protocol
+ * over rpc.
+ */
+class StorageApiRpcBmFeedHandler : public IBmFeedHandler
+{
+ class MyMessageDispatcher;
+ std::unique_ptr<storage::api::StorageMessageAddress> _storage_address;
+ storage::rpc::SharedRpcResources& _shared_rpc_resources;
+ std::unique_ptr<MyMessageDispatcher> _message_dispatcher;
+ std::unique_ptr<storage::rpc::MessageCodecProvider> _message_codec_provider;
+ std::unique_ptr<storage::rpc::StorageApiRpcService> _rpc_client;
+
+ void send_rpc(std::shared_ptr<storage::api::StorageCommand> cmd, PendingTracker& tracker);
+public:
+ StorageApiRpcBmFeedHandler(storage::rpc::SharedRpcResources& shared_rpc_resources_in, std::shared_ptr<const document::DocumentTypeRepo> repo);
+ ~StorageApiRpcBmFeedHandler();
+ void put(const document::Bucket& bucket, std::unique_ptr<document::Document> document, uint64_t timestamp, PendingTracker& tracker) override;
+ void update(const document::Bucket& bucket, std::unique_ptr<document::DocumentUpdate> document_update, uint64_t timestamp, PendingTracker& tracker) override;
+ void remove(const document::Bucket& bucket, const document::DocumentId& document_id, uint64_t timestamp, PendingTracker& tracker) override;
+};
+
+}