aboutsummaryrefslogtreecommitdiffstats
path: root/searchcore/src/vespa/searchcore/proton/metrics/job_tracked_flush_task.h
blob: a10ccbdffd6e787cd9172bbf8b668723e5d9f90d (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
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once

#include "i_job_tracker.h"
#include <vespa/searchcorespi/flush/flushtask.h>

namespace proton {

/**
 * Class that tracks the start and end of a flush task.
 */
class JobTrackedFlushTask : public searchcorespi::FlushTask
{
private:
    std::shared_ptr<IJobTracker>  _tracker;
    searchcorespi::FlushTask::UP _task;

public:
    JobTrackedFlushTask(std::shared_ptr<IJobTracker> tracker,
                        searchcorespi::FlushTask::UP task);
    JobTrackedFlushTask(const JobTrackedFlushTask &) = delete;
    JobTrackedFlushTask & operator = (const JobTrackedFlushTask &) = delete;
    ~JobTrackedFlushTask() override;

    void run() override;
    search::SerialNum getFlushSerial() const override {
        return _task->getFlushSerial();
    }
};

} // namespace proton