1*71230efdSCarol Wang #pragma once
2*71230efdSCarol Wang 
3*71230efdSCarol Wang #include <sdbusplus/bus.hpp>
4*71230efdSCarol Wang #include <phosphor-logging/log.hpp>
5*71230efdSCarol Wang #include <xyz/openbmc_project/State/ScheduledHostTransition/server.hpp>
6*71230efdSCarol Wang 
7*71230efdSCarol Wang namespace phosphor
8*71230efdSCarol Wang {
9*71230efdSCarol Wang namespace state
10*71230efdSCarol Wang {
11*71230efdSCarol Wang namespace manager
12*71230efdSCarol Wang {
13*71230efdSCarol Wang 
14*71230efdSCarol Wang using ScheduledHostTransitionInherit = sdbusplus::server::object::object<
15*71230efdSCarol Wang     sdbusplus::xyz::openbmc_project::State::server::ScheduledHostTransition>;
16*71230efdSCarol Wang 
17*71230efdSCarol Wang /** @class ScheduledHostTransition
18*71230efdSCarol Wang  *  @brief Scheduled host transition implementation.
19*71230efdSCarol Wang  *  @details A concrete implementation for
20*71230efdSCarol Wang  *  xyz.openbmc_project.State.ScheduledHostTransition
21*71230efdSCarol Wang  */
22*71230efdSCarol Wang class ScheduledHostTransition : public ScheduledHostTransitionInherit
23*71230efdSCarol Wang {
24*71230efdSCarol Wang   public:
25*71230efdSCarol Wang     ScheduledHostTransition(sdbusplus::bus::bus& bus, const char* objPath) :
26*71230efdSCarol Wang         ScheduledHostTransitionInherit(bus, objPath)
27*71230efdSCarol Wang     {
28*71230efdSCarol Wang     }
29*71230efdSCarol Wang 
30*71230efdSCarol Wang     ~ScheduledHostTransition() = default;
31*71230efdSCarol Wang 
32*71230efdSCarol Wang     /**
33*71230efdSCarol Wang      * @brief Handle with scheduled time
34*71230efdSCarol Wang      *
35*71230efdSCarol Wang      * @param[in] value - The seconds since epoch
36*71230efdSCarol Wang      * @return The time for the transition. It is the same as the input value if
37*71230efdSCarol Wang      * it is set successfully. Otherwise, it won't return value, but throw an
38*71230efdSCarol Wang      * error.
39*71230efdSCarol Wang      **/
40*71230efdSCarol Wang     uint64_t scheduledTime(uint64_t value) override;
41*71230efdSCarol Wang };
42*71230efdSCarol Wang } // namespace manager
43*71230efdSCarol Wang } // namespace state
44*71230efdSCarol Wang } // namespace phosphor