summaryrefslogtreecommitdiffstats
path: root/searchlib/src/vespa/searchlib/memoryindex/push_task.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'searchlib/src/vespa/searchlib/memoryindex/push_task.cpp')
-rw-r--r--searchlib/src/vespa/searchlib/memoryindex/push_task.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/searchlib/src/vespa/searchlib/memoryindex/push_task.cpp b/searchlib/src/vespa/searchlib/memoryindex/push_task.cpp
new file mode 100644
index 00000000000..0eca882836b
--- /dev/null
+++ b/searchlib/src/vespa/searchlib/memoryindex/push_task.cpp
@@ -0,0 +1,44 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "push_task.h"
+#include "push_context.h"
+#include "field_inverter.h"
+#include "url_field_inverter.h"
+
+namespace search::memoryindex {
+
+namespace {
+
+template <typename Inverter>
+void push_inverter(Inverter& inverter)
+{
+ inverter.applyRemoves();
+ inverter.pushDocuments();
+}
+
+}
+
+
+PushTask::PushTask(const PushContext& context, const std::vector<std::unique_ptr<FieldInverter>>& inverters, const std::vector<std::unique_ptr<UrlFieldInverter>>& uri_inverters, std::shared_ptr<vespalib::IDestructorCallback> on_write_done, std::shared_ptr<vespalib::RetainGuard> retain)
+ : _context(context),
+ _inverters(inverters),
+ _uri_inverters(uri_inverters),
+ _on_write_done(std::move(on_write_done)),
+ _retain(std::move(retain))
+{
+}
+
+PushTask::~PushTask() = default;
+
+void
+PushTask::run()
+{
+ for (auto field_id : _context.get_fields()) {
+ push_inverter(*_inverters[field_id]);
+ }
+ for (auto uri_field_id : _context.get_uri_fields()) {
+ push_inverter(*_uri_inverters[uri_field_id]);
+ }
+}
+
+}