blob: 54de5ea72dd4293172c5ada7918caa8f3c86fa25 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#include "sequencedtaskexecutorobserver.h"
namespace vespalib {
SequencedTaskExecutorObserver::SequencedTaskExecutorObserver(ISequencedTaskExecutor &executor)
: ISequencedTaskExecutor(executor.getNumExecutors()),
_executor(executor),
_executeCnt(0u),
_syncCnt(0u),
_executeHistory(),
_mutex()
{
}
SequencedTaskExecutorObserver::~SequencedTaskExecutorObserver() = default;
void
SequencedTaskExecutorObserver::executeTask(ExecutorId id, Executor::Task::UP task)
{
++_executeCnt;
{
std::lock_guard<std::mutex> guard(_mutex);
_executeHistory.emplace_back(id.getId());
}
_executor.executeTask(id, std::move(task));
}
void
SequencedTaskExecutorObserver::executeTasks(TaskList tasks)
{
_executeCnt += tasks.size();
{
std::lock_guard<std::mutex> guard(_mutex);
for (const auto & task : tasks) {
_executeHistory.emplace_back(task.first.getId());
}
}
_executor.executeTasks(std::move(tasks));
}
void
SequencedTaskExecutorObserver::sync_all()
{
++_syncCnt;
_executor.sync_all();
}
std::vector<uint32_t>
SequencedTaskExecutorObserver::getExecuteHistory()
{
std::lock_guard<std::mutex> guard(_mutex);
return _executeHistory;
}
void SequencedTaskExecutorObserver::setTaskLimit(uint32_t taskLimit) {
_executor.setTaskLimit(taskLimit);
}
ExecutorStats SequencedTaskExecutorObserver::getStats() {
return _executor.getStats();
}
ISequencedTaskExecutor::ExecutorId
SequencedTaskExecutorObserver::getExecutorId(uint64_t componentId) const {
return _executor.getExecutorId(componentId);
}
} // namespace search
|