blob: 9210017d28d1fd0816124405c97a93d324dc4465 (
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
|
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
#pragma once
#include "i_maintenance_job.h"
#include <vespa/searchcore/proton/metrics/i_job_tracker.h>
namespace proton {
/**
* Class for tracking the start and end of a maintenance job.
*/
class JobTrackedMaintenanceJob final : public IMaintenanceJob
{
private:
std::shared_ptr<IJobTracker> _tracker;
IMaintenanceJob::SP _job;
bool _running;
public:
JobTrackedMaintenanceJob(std::shared_ptr<IJobTracker> tracker, IMaintenanceJob::SP job);
JobTrackedMaintenanceJob(const JobTrackedMaintenanceJob &) = delete;
JobTrackedMaintenanceJob & operator = (const JobTrackedMaintenanceJob &) = delete;
~JobTrackedMaintenanceJob() override;
bool isBlocked() const override { return _job->isBlocked(); }
IBlockableMaintenanceJob *asBlockable() override { return _job->asBlockable(); }
void registerRunner(IMaintenanceJobRunner *runner) override {
_job->registerRunner(runner);
}
bool run() override;
void onStop() override { _job->stop(); }
};
} // namespace proton
|