#pragma once
#include "callback.hpp"

#include <string>

namespace phosphor
{
namespace dbus
{
namespace monitoring
{

/**
 * @class ResolveCallout
 * @brief Resolves error logs with the associated callout
 *
 * Resolves a log by setting its Resolved property
 * to true.
 */
class ResolveCallout : public Callback
{
  public:
    ResolveCallout() = delete;
    ~ResolveCallout() = default;
    ResolveCallout(const ResolveCallout&) = delete;
    ResolveCallout& operator=(const ResolveCallout&) = delete;
    ResolveCallout(ResolveCallout&&) = default;
    ResolveCallout& operator=(ResolveCallout&&) = default;

    /**
     * @brief constructor
     *
     * @param[in] callout - The callout whose errors need to be resolved.
     *                      Normally an inventory path.
     */
    explicit ResolveCallout(const std::string& callout) : callout(callout)
    {}

    /**
     * @brief Callback interface to resolve errors
     *
     * Resolves all error log entries that are associated
     * with the callout.
     */
    void operator()(Context ctx) override;

  private:
    /**
     * @brief Resolves a single error log entry
     *
     * param[in] entry - the object path of the error log entry
     */
    void resolve(const std::string& entry);

    /**
     * @brief The object path of the callout, typically an inventory path
     */
    std::string callout;
};

} // namespace monitoring
} // namespace dbus
} // namespace phosphor
