aboutsummaryrefslogtreecommitdiffstats
path: root/searchcore/src/vespa/searchcore/proton/metrics/job_tracked_flush_target.cpp
blob: 64540eea9be38d2f799983239ee75e1c3afe3d04 (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
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.

#include "job_tracked_flush_target.h"
#include "job_tracked_flush_task.h"

using searchcorespi::IFlushTarget;
using searchcorespi::FlushTask;

namespace proton {

JobTrackedFlushTarget::JobTrackedFlushTarget(std::shared_ptr<IJobTracker> tracker,
                                             std::shared_ptr<IFlushTarget> target)
    : IFlushTarget(target->getName(), target->getType(), target->getComponent()),
      _tracker(std::move(tracker)),
      _target(std::move(target))
{
}

JobTrackedFlushTarget::~JobTrackedFlushTarget() = default;

FlushTask::UP
JobTrackedFlushTarget::initFlush(SerialNum currentSerial, std::shared_ptr<search::IFlushToken> flush_token)
{
    _tracker->start();
    FlushTask::UP targetTask = _target->initFlush(currentSerial, std::move(flush_token));
    _tracker->end();
    if (targetTask) {
        return std::make_unique<JobTrackedFlushTask>(_tracker, std::move(targetTask));
    }
    return FlushTask::UP();
}

} // namespace proton