blob: c42f422c93d43f504fc928dfdbffc63325a369b2 [file] [log] [blame]
#ifndef PAYLOAD_PROPERTIES_HANDLER_ACTION_H_
#define PAYLOAD_PROPERTIES_HANDLER_ACTION_H_
#include "update_engine/common/action.h"
#include "update_engine/system_state.h"
#include "update_engine/payload_consumer/install_plan.h"
#include "update_engine/payload_properties.h"
// This class reads in Payload properties and converts what it sees into
// an install plan which is passed out.
namespace chromeos_update_engine {
class PayloadPropertiesHandlerAction;
template<>
class ActionTraits<PayloadPropertiesHandlerAction> {
public:
// Takes parameters on the input pipe.
typedef PayloadProperties InputObjectType;
typedef InstallPlan OutputObjectType;
};
class PayloadPropertiesHandlerAction : public Action<PayloadPropertiesHandlerAction>
{
public:
PayloadPropertiesHandlerAction(SystemState* system_state);
~PayloadPropertiesHandlerAction() override;
typedef ActionTraits<PayloadPropertiesHandlerAction>::InputObjectType InputObjectType;
typedef ActionTraits<PayloadPropertiesHandlerAction>::OutputObjectType OutputObjectType;
void PerformAction() override;
const InstallPlan& install_plan() const { return install_plan_; }
// Debugging/logging
static std::string StaticType() { return "PayloadPropertiesHandlerAction"; }
std::string Type() const override { return StaticType(); }
private:
// Global system context.
SystemState* system_state_;
// The install plan, if we have an update.
InstallPlan install_plan_;
DISALLOW_COPY_AND_ASSIGN(PayloadPropertiesHandlerAction);
};
} // namespace chromeos_update_engine
#endif // PAYLOAD_PROPERTIES_HANDLER_ACTION_H_