#pragma once

#include "snmp_client.hpp"

#include <experimental/filesystem>

namespace phosphor
{
namespace network
{
namespace snmp
{

constexpr auto SEPARATOR = "_";

namespace fs = std::experimental::filesystem;

/** @brief Serialize and persist SNMP manager/client D-Bus object.
 *  @param[in] id - filename of the persisted SNMP manager object.
 *  @param[in] manager - const reference to snmp client/manager object.
 *  @param[in] path -  path of persistent location where D-Bus object would be
 * saved.
 *  @return fs::path - pathname of persisted snmp manager/client file.
 */
fs::path serialize(Id id, const Client& manager, const fs::path& path);

/** @brief Deserialze SNMP manager/client info into a D-Bus object
 *  @param[in] path - pathname of persisted manager/client file.
 *  @param[in] manager - reference to snmp client/manager object
 *                       which is the target of deserialization.
 *  @return bool - true if the deserialization was successful, false otherwise.
 */
bool deserialize(const fs::path& path, Client& manager);

} // namespace snmp
} // namespace network
} // namespace phosphor
