diff options
| author | Dan Engelbrecht <[email protected]> | 2024-04-20 13:22:05 +0200 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2024-04-20 13:22:05 +0200 |
| commit | aa0b0d3cbfc6c4561591df856396703f7177292e (patch) | |
| tree | 6ff9a4e94559ba62d8ee07076d56dedc7d2e9115 /src/zencore/workthreadpool.cpp | |
| parent | 5.4.5-pre0 (diff) | |
| download | zen-aa0b0d3cbfc6c4561591df856396703f7177292e.tar.xz zen-aa0b0d3cbfc6c4561591df856396703f7177292e.zip | |
import oplog improvements (#54)
* report down/up transfer speed during progress
* add disk buffering in http client
* offload block decoding and chunk writing form network worker pool threads
add block hash verification for blocks recevied at oplog import
* separate download-latch from write-latch to get more accurate download speed
* check headers when downloading with http client to go directly to file writing for large payloads
* we must clear write callback even if we only provide it as an argument to the Download() call
* make timeout optional in AddSponsorProcess
* check return codes when creating windows threadpool
Diffstat (limited to 'src/zencore/workthreadpool.cpp')
| -rw-r--r-- | src/zencore/workthreadpool.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/zencore/workthreadpool.cpp b/src/zencore/workthreadpool.cpp index f41c13bf6..d15fb2e83 100644 --- a/src/zencore/workthreadpool.cpp +++ b/src/zencore/workthreadpool.cpp @@ -3,6 +3,7 @@ #include <zencore/workthreadpool.h> #include <zencore/blockingqueue.h> +#include <zencore/except.h> #include <zencore/logging.h> #include <zencore/string.h> #include <zencore/testing.h> @@ -56,18 +57,33 @@ struct WorkerThreadPool::Impl // Thread pool setup m_ThreadPool = CreateThreadpool(NULL); + if (m_ThreadPool == NULL) + { + ThrowLastError("CreateThreadpool failed"); + } - SetThreadpoolThreadMinimum(m_ThreadPool, InThreadCount); + if (!SetThreadpoolThreadMinimum(m_ThreadPool, InThreadCount)) + { + ThrowLastError("SetThreadpoolThreadMinimum failed"); + } SetThreadpoolThreadMaximum(m_ThreadPool, InThreadCount * 2); InitializeThreadpoolEnvironment(&m_CallbackEnvironment); m_CleanupGroup = CreateThreadpoolCleanupGroup(); + if (m_CleanupGroup == NULL) + { + ThrowLastError("CreateThreadpoolCleanupGroup failed"); + } SetThreadpoolCallbackPool(&m_CallbackEnvironment, m_ThreadPool); SetThreadpoolCallbackCleanupGroup(&m_CallbackEnvironment, m_CleanupGroup, NULL); m_Work = CreateThreadpoolWork(&WorkCallback, this, &m_CallbackEnvironment); + if (m_Work == NULL) + { + ThrowLastError("CreateThreadpoolWork failed"); + } } ~Impl() |