summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-12-21 17:45:39 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2022-12-21 17:45:39 +0000
commit104624eee472ee6731614780e740c55f09d8a623 (patch)
tree43fc90378f0495da72d07ffe3355b0cc6dcecfc4
parenta736bb0912f680bbb39396934ca9bbd0b921fde8 (diff)
Use a unique_ptr and hide implementation.
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/shared_threading_service.cpp9
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/shared_threading_service.h8
2 files changed, 10 insertions, 7 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/server/shared_threading_service.cpp b/searchcore/src/vespa/searchcore/proton/server/shared_threading_service.cpp
index a0344c57000..f1664a41665 100644
--- a/searchcore/src/vespa/searchcore/proton/server/shared_threading_service.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/shared_threading_service.cpp
@@ -5,6 +5,7 @@
#include <vespa/vespalib/util/threadstackexecutor.h>
#include <vespa/vespalib/util/cpu_usage.h>
#include <vespa/vespalib/util/sequencedtaskexecutor.h>
+#include <vespa/vespalib/util/invokeserviceimpl.h>
#include <vespa/vespalib/util/nice.h>
using vespalib::CpuUsage;
@@ -26,11 +27,11 @@ SharedThreadingService::SharedThreadingService(const SharedThreadingServiceConfi
_shared(std::make_shared<vespalib::BlockingThreadStackExecutor>(cfg.shared_threads(),
cfg.shared_task_limit(), vespalib::be_nice(proton_shared_executor, cfg.feeding_niceness()))),
_field_writer(),
- _invokeService(std::max(vespalib::adjustTimeoutByDetectedHz(1ms),
- cfg.field_writer_config().reactionTime())),
+ _invokeService(std::make_unique<vespalib::InvokeServiceImpl>(std::max(vespalib::adjustTimeoutByDetectedHz(1ms),
+ cfg.field_writer_config().reactionTime()))),
_invokeRegistrations(),
_bucket_executor(bucket_executor),
- _clock(_invokeService.nowRef())
+ _clock(dynamic_cast<const vespalib::InvokeServiceImpl &>(*_invokeService).nowRef())
{
const auto& fw_cfg = cfg.field_writer_config();
_field_writer = vespalib::SequencedTaskExecutor::create(vespalib::be_nice(CpuUsage::wrap(proton_field_writer_executor, CpuUsage::Category::WRITE), cfg.feeding_niceness()),
@@ -40,7 +41,7 @@ SharedThreadingService::SharedThreadingService(const SharedThreadingServiceConfi
fw_cfg.optimize(),
fw_cfg.kindOfwatermark());
if (fw_cfg.optimize() == vespalib::Executor::OptimizeFor::THROUGHPUT) {
- _invokeRegistrations.push_back(_invokeService.registerInvoke([executor = _field_writer.get()]() {
+ _invokeRegistrations.push_back(_invokeService->registerInvoke([executor = _field_writer.get()]() {
executor->wakeup();
}));
}
diff --git a/searchcore/src/vespa/searchcore/proton/server/shared_threading_service.h b/searchcore/src/vespa/searchcore/proton/server/shared_threading_service.h
index 019b9fe0596..2bc67037108 100644
--- a/searchcore/src/vespa/searchcore/proton/server/shared_threading_service.h
+++ b/searchcore/src/vespa/searchcore/proton/server/shared_threading_service.h
@@ -6,9 +6,11 @@
#include <vespa/vespalib/util/threadexecutor.h>
#include <vespa/vespalib/util/syncable.h>
#include <vespa/vespalib/util/clock.h>
-#include <vespa/vespalib/util/invokeserviceimpl.h>
#include <memory>
+namespace vespalib {
+ class IDestructorCallback;
+}
namespace proton {
/**
@@ -21,7 +23,7 @@ private:
std::unique_ptr<vespalib::SyncableThreadExecutor> _warmup;
std::shared_ptr<vespalib::SyncableThreadExecutor> _shared;
std::unique_ptr<vespalib::ISequencedTaskExecutor> _field_writer;
- vespalib::InvokeServiceImpl _invokeService;
+ std::unique_ptr<vespalib::InvokeService> _invokeService;
std::vector<Registration> _invokeRegistrations;
storage::spi::BucketExecutor& _bucket_executor;
vespalib::Clock _clock;
@@ -37,7 +39,7 @@ public:
vespalib::ThreadExecutor& warmup() override { return *_warmup; }
vespalib::ThreadExecutor& shared() override { return *_shared; }
vespalib::ISequencedTaskExecutor& field_writer() override { return *_field_writer; }
- vespalib::InvokeService & invokeService() override { return _invokeService; }
+ vespalib::InvokeService & invokeService() override { return *_invokeService; }
FNET_Transport & transport() override { return _transport; }
storage::spi::BucketExecutor& bucket_executor() override { return _bucket_executor; }
const vespalib::Clock & clock() const override { return _clock; }