diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-12-21 17:45:39 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-12-21 17:45:39 +0000 |
commit | 104624eee472ee6731614780e740c55f09d8a623 (patch) | |
tree | 43fc90378f0495da72d07ffe3355b0cc6dcecfc4 /searchcore | |
parent | a736bb0912f680bbb39396934ca9bbd0b921fde8 (diff) |
Use a unique_ptr and hide implementation.
Diffstat (limited to 'searchcore')
-rw-r--r-- | searchcore/src/vespa/searchcore/proton/server/shared_threading_service.cpp | 9 | ||||
-rw-r--r-- | searchcore/src/vespa/searchcore/proton/server/shared_threading_service.h | 8 |
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; } |