1 #pragma once
2 
3 #include "config.h"
4 
5 #include "elog_entry.hpp"
6 
7 #include <filesystem>
8 #include <string>
9 #include <vector>
10 
11 namespace phosphor
12 {
13 namespace logging
14 {
15 
16 namespace fs = std::filesystem;
17 
18 /** @brief Serialize and persist error d-bus object
19  *  @param[in] a - const reference to error entry.
20  *  @param[in] dir - pathname of directory where the serialized error will
21  *                   be placed.
22  *  @return fs::path - pathname of persisted error file
23  */
24 fs::path serialize(const Entry& e,
25                    const fs::path& dir = fs::path(ERRLOG_PERSIST_PATH));
26 
27 /** @brief Deserialze a persisted error into a d-bus object
28  *  @param[in] path - pathname of persisted error file
29  *  @param[in] e - reference to error object which is the target of
30  *             deserialization.
31  *  @return bool - true if the deserialization was successful, false otherwise.
32  */
33 bool deserialize(const fs::path& path, Entry& e);
34 
35 /** @brief Return the path to serialize a log entry to
36  *  @param[in] id - log entry ID
37  *  @param[in] dir - pathname of directory where the serialized error will
38  *                   be placed.
39  *  @return fs::path - pathname of persisted error file
40  */
41 fs::path
42     getEntrySerializePath(uint32_t id,
43                           const fs::path& dir = fs::path(ERRLOG_PERSIST_PATH));
44 
45 } // namespace logging
46 } // namespace phosphor
47