#ifndef PRODUCTION_BORG_MGMT_NODE_PROXY_SAFEPOWER_SAFEPOWER_AGENT_BMC_CONVERT_STATUS_H_
#define PRODUCTION_BORG_MGMT_NODE_PROXY_SAFEPOWER_SAFEPOWER_AGENT_BMC_CONVERT_STATUS_H_

#include <string>
#include <utility>
#include "absl/status/status.h"
#include "grpcpp/support/status.h"

namespace safepower_agent {

inline grpc::Status ConvertStatus(const absl::Status& status) {
  return grpc::Status(static_cast<grpc::StatusCode>(status.code()),
                      std::string(status.message()));
}

inline absl::Status ConvertStatus(grpc::Status status) {
  return absl::Status(static_cast<absl::StatusCode>(status.error_code()),
                      std::move(status.error_message()));
}
}  // namespace safepower_agent

#endif  // PRODUCTION_BORG_MGMT_NODE_PROXY_SAFEPOWER_SAFEPOWER_AGENT_BMC_CONVERT_STATUS_H_
