diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-11-29 11:47:48 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2020-11-29 21:31:32 +0000 |
commit | 34d64875c38d2a8049a70f0bdf9d7fcc3ce16ef8 (patch) | |
tree | 214463ccf7fd62a79a90330375e2f52af2538561 /fnet/src | |
parent | 200d1b30b475babc684b2c1e608c44e0e8f7ac25 (diff) |
Use std::make_unique and hide actual ThreadExecutor implementation.
Diffstat (limited to 'fnet/src')
-rw-r--r-- | fnet/src/vespa/fnet/transport.cpp | 11 | ||||
-rw-r--r-- | fnet/src/vespa/fnet/transport.h | 3 | ||||
-rw-r--r-- | fnet/src/vespa/fnet/transport_thread.cpp | 1 | ||||
-rw-r--r-- | fnet/src/vespa/fnet/transport_thread.h | 8 |
4 files changed, 11 insertions, 12 deletions
diff --git a/fnet/src/vespa/fnet/transport.cpp b/fnet/src/vespa/fnet/transport.cpp index d3b52969c8c..8543d648400 100644 --- a/fnet/src/vespa/fnet/transport.cpp +++ b/fnet/src/vespa/fnet/transport.cpp @@ -3,6 +3,7 @@ #include "transport.h" #include "transport_thread.h" #include "iocomponent.h" +#include <vespa/vespalib/util/threadstackexecutor.h> #include <chrono> #include <xxhash.h> @@ -27,12 +28,12 @@ VESPA_THREAD_STACK_TAG(fnet_work_pool); FNET_Transport::FNET_Transport(vespalib::AsyncResolver::SP resolver, vespalib::CryptoEngine::SP crypto, size_t num_threads) : _async_resolver(std::move(resolver)), _crypto_engine(std::move(crypto)), - _work_pool(1, 128 * 1024, fnet_work_pool, 1024), + _work_pool(std::make_unique<vespalib::ThreadStackExecutor>(1, 128 * 1024, fnet_work_pool, 1024)), _threads() { assert(num_threads >= 1); for (size_t i = 0; i < num_threads; ++i) { - _threads.emplace_back(new FNET_TransportThread(*this)); + _threads.emplace_back(std::make_unique<FNET_TransportThread>(*this)); } } @@ -41,7 +42,7 @@ FNET_Transport::~FNET_Transport() = default; void FNET_Transport::post_or_perform(vespalib::Executor::Task::UP task) { - if (auto rejected = _work_pool.execute(std::move(task))) { + if (auto rejected = _work_pool->execute(std::move(task))) { rejected->run(); } } @@ -161,7 +162,7 @@ FNET_Transport::ShutDown(bool waitFinished) } if (waitFinished) { _async_resolver->wait_for_pending_resolves(); - _work_pool.shutdown().sync(); + _work_pool->shutdown().sync(); } } @@ -172,7 +173,7 @@ FNET_Transport::WaitFinished() thread->WaitFinished(); } _async_resolver->wait_for_pending_resolves(); - _work_pool.shutdown().sync(); + _work_pool->shutdown().sync(); } bool diff --git a/fnet/src/vespa/fnet/transport.h b/fnet/src/vespa/fnet/transport.h index 02ef22c7fb6..29f1fb2144f 100644 --- a/fnet/src/vespa/fnet/transport.h +++ b/fnet/src/vespa/fnet/transport.h @@ -7,7 +7,6 @@ #include <vector> #include <vespa/vespalib/net/async_resolver.h> #include <vespa/vespalib/net/crypto_engine.h> -#include <vespa/vespalib/util/threadstackexecutor.h> class FNET_TransportThread; class FastOS_ThreadPool; @@ -30,7 +29,7 @@ private: vespalib::AsyncResolver::SP _async_resolver; vespalib::CryptoEngine::SP _crypto_engine; - vespalib::ThreadStackExecutor _work_pool; + std::unique_ptr<vespalib::SyncableThreadExecutor> _work_pool; Threads _threads; public: diff --git a/fnet/src/vespa/fnet/transport_thread.cpp b/fnet/src/vespa/fnet/transport_thread.cpp index a20de880f15..ba9c4bb7789 100644 --- a/fnet/src/vespa/fnet/transport_thread.cpp +++ b/fnet/src/vespa/fnet/transport_thread.cpp @@ -9,6 +9,7 @@ #include "transport.h" #include <vespa/vespalib/net/socket_spec.h> #include <vespa/vespalib/net/server_socket.h> +#include <vespa/vespalib/util/gate.h> #include <csignal> #include <vespa/log/log.h> diff --git a/fnet/src/vespa/fnet/transport_thread.h b/fnet/src/vespa/fnet/transport_thread.h index 8bced290962..966ffb849e0 100644 --- a/fnet/src/vespa/fnet/transport_thread.h +++ b/fnet/src/vespa/fnet/transport_thread.h @@ -54,10 +54,6 @@ private: bool _finished; // event loop stopped ? bool _waitFinished; // someone is waiting for _finished - FNET_TransportThread(const FNET_TransportThread &); - FNET_TransportThread &operator=(const FNET_TransportThread &); - - /** * Add an IOComponent to the list of components. This operation is * performed immidiately and without locking. This method should @@ -177,6 +173,8 @@ private: } public: + FNET_TransportThread(const FNET_TransportThread &) = delete; + FNET_TransportThread &operator=(const FNET_TransportThread &) = delete; /** * Construct a transport object. To activate your newly created * transport object you need to call either the Start method to @@ -192,7 +190,7 @@ public: * Destruct object. This should NOT be done before the transport * thread has completed it's work and raised the finished flag. **/ - ~FNET_TransportThread(); + ~FNET_TransportThread() override; /** |