| Adriana Kobylak | 88d7cf8 | 2017-01-24 12:30:15 -0600 | [diff] [blame] | 1 | #pragma once | 
|  | 2 |  | 
|  | 3 | #include <sdbusplus/bus.hpp> | 
|  | 4 | #include <sdbusplus/server/object.hpp> | 
|  | 5 | #include "xyz/openbmc_project/Logging/Entry/server.hpp" | 
|  | 6 |  | 
|  | 7 | namespace phosphor | 
|  | 8 | { | 
|  | 9 | namespace logging | 
|  | 10 | { | 
|  | 11 | namespace details | 
|  | 12 | { | 
|  | 13 |  | 
|  | 14 | template <typename T> | 
|  | 15 | using ServerObject = typename sdbusplus::server::object::object<T>; | 
|  | 16 |  | 
|  | 17 | using EntryIface = | 
|  | 18 | sdbusplus::xyz::openbmc_project::Logging::server::Entry; | 
|  | 19 |  | 
|  | 20 | } // namespace details | 
|  | 21 |  | 
|  | 22 | /** @class Entry | 
|  | 23 | *  @brief OpenBMC logging entry implementation. | 
|  | 24 | *  @details A concrete implementation for the | 
|  | 25 | *  xyz.openbmc_project.Logging.Entry DBus API. | 
|  | 26 | */ | 
| Adriana Kobylak | df995fa | 2017-01-08 15:14:02 -0600 | [diff] [blame] | 27 | class Entry : public details::ServerObject<details::EntryIface> | 
| Adriana Kobylak | 88d7cf8 | 2017-01-24 12:30:15 -0600 | [diff] [blame] | 28 | { | 
|  | 29 | public: | 
|  | 30 | Entry() = delete; | 
|  | 31 | Entry(const Entry&) = delete; | 
|  | 32 | Entry& operator=(const Entry&) = delete; | 
|  | 33 | Entry(Entry&&) = delete; | 
|  | 34 | Entry& operator=(Entry&&) = delete; | 
|  | 35 | virtual ~Entry() = default; | 
|  | 36 |  | 
| Adriana Kobylak | df995fa | 2017-01-08 15:14:02 -0600 | [diff] [blame] | 37 | /** @brief Constructor to put object onto bus at a dbus path. | 
| Adriana Kobylak | 4ea7f31 | 2017-01-10 12:52:34 -0600 | [diff] [blame] | 38 | *         Defer signal registration (pass true for deferSignal to the | 
|  | 39 | *         base class) until after the properties are set. | 
| Adriana Kobylak | df995fa | 2017-01-08 15:14:02 -0600 | [diff] [blame] | 40 | *  @param[in] bus - Bus to attach to. | 
|  | 41 | *  @param[in] path - Path to attach at. | 
| Adriana Kobylak | c5f0bbd | 2017-01-22 14:56:04 -0600 | [diff] [blame] | 42 | *  @param[in] idErr - The error entry id. | 
|  | 43 | *  @param[in] timestampErr - The commit timestamp. | 
|  | 44 | *  @param[in] severityErr - The severity of the error. | 
|  | 45 | *  @param[in] msgErr - The message of the error. | 
|  | 46 | *  @param[in] additionalDataErr - The error metadata. | 
| Adriana Kobylak | 88d7cf8 | 2017-01-24 12:30:15 -0600 | [diff] [blame] | 47 | */ | 
| Adriana Kobylak | 4ea7f31 | 2017-01-10 12:52:34 -0600 | [diff] [blame] | 48 | Entry(sdbusplus::bus::bus& bus, | 
|  | 49 | const std::string& path, | 
|  | 50 | uint32_t idErr, | 
| Adriana Kobylak | c5f0bbd | 2017-01-22 14:56:04 -0600 | [diff] [blame] | 51 | uint64_t timestampErr, | 
| Adriana Kobylak | 4ea7f31 | 2017-01-10 12:52:34 -0600 | [diff] [blame] | 52 | Level severityErr, | 
|  | 53 | std::string&& msgErr, | 
|  | 54 | std::vector<std::string>&& additionalDataErr) : | 
|  | 55 | details::ServerObject<details::EntryIface> | 
|  | 56 | (bus, path.c_str(), true) | 
|  | 57 | { | 
|  | 58 | id(idErr); | 
|  | 59 | severity(severityErr); | 
| Adriana Kobylak | c5f0bbd | 2017-01-22 14:56:04 -0600 | [diff] [blame] | 60 | timestamp(timestampErr); | 
| Adriana Kobylak | 4ea7f31 | 2017-01-10 12:52:34 -0600 | [diff] [blame] | 61 | message(std::move(msgErr)); | 
|  | 62 | additionalData(std::move(additionalDataErr)); | 
|  | 63 |  | 
|  | 64 | // Emit deferred signal. | 
|  | 65 | this->emit_object_added(); | 
|  | 66 | }; | 
|  | 67 |  | 
| Adriana Kobylak | 88d7cf8 | 2017-01-24 12:30:15 -0600 | [diff] [blame] | 68 | }; | 
|  | 69 |  | 
|  | 70 | } // namespace logging | 
|  | 71 | } // namespace phosphor |