Files
ANSLibs/OpenVINO/runtime/include/openvino/frontend/extension/progress_reporter.hpp

40 lines
2.1 KiB
C++
Raw Normal View History

// Copyright (C) 2018-2025 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#pragma once
#include "openvino/core/extension.hpp"
#include "openvino/frontend/visibility.hpp"
namespace ov {
namespace frontend {
class FRONTEND_API ProgressReporterExtension : public ov::Extension {
public:
/// \brief A progress reporting callback signature. A FunctionObject that matches this signature should be passed
/// to the constructor of this extension. The extension will then invoke this as a callback each time the
/// progress needs to be reported. The callback itself is responsible for consuming the reported values.
///
/// \param progress A float value in the range [0.0, 1.0] indicating the total progress of an operation.
/// \param total_steps The total number of steps that a given instance of this extension is tracking
/// \param completed_completed The current number of completed steps (out of the total number of steps to take)
using progress_notifier_callback = std::function<void(float, unsigned int, unsigned int)>;
/// \brief The default constructor which creates a reporter that doesn't report progress
ProgressReporterExtension() : m_callback{[](float, unsigned int, unsigned int) {}} {}
ProgressReporterExtension(const progress_notifier_callback& callback) : m_callback{callback} {}
ProgressReporterExtension(progress_notifier_callback&& callback) : m_callback{std::move(callback)} {}
/// \brief The main method of this extension used to report the progress.
/// This method forwards its arguments to the callback stored in this class.
/// \param progress A float value in the range [0.0, 1.0] indicating the total progress of an operation.
/// \param total_steps The total number of steps that a given instance of this extension is tracking
/// \param completed_steps The current number of completed steps (out of the total number of steps to take)
void report_progress(float progress, unsigned int total_steps, unsigned int completed_steps) const;
private:
progress_notifier_callback m_callback;
};
} // namespace frontend
} // namespace ov