Revert "pldm: use std::expected for instance ID allocation"

This reverts commit 70262ed7bf854b25d4b65628bc3c892ddfe9380f.

Change-Id: I1f54d6b60bf3cfa9f00764140eec6167e1e182d6
Signed-off-by: Manojkiran Eda <manojkiran.eda@gmail.com>
diff --git a/common/instance_id.hpp b/common/instance_id.hpp
index 2a29f82..40de1f1 100644
--- a/common/instance_id.hpp
+++ b/common/instance_id.hpp
@@ -5,70 +5,12 @@
 #include <cerrno>
 #include <cstdint>
 #include <exception>
-#include <expected>
 #include <string>
 #include <system_error>
 
 namespace pldm
 {
 
-/**
- * @class InstanceIdError
- * @brief Exception for PLDM instance ID allocation and management errors.
- */
-class InstanceIdError : public std::exception
-{
-  public:
-    InstanceIdError(const InstanceIdError&) noexcept = default;
-    InstanceIdError(InstanceIdError&&) noexcept = default;
-    InstanceIdError& operator=(const InstanceIdError&) noexcept = default;
-    InstanceIdError& operator=(InstanceIdError&&) noexcept = default;
-    ~InstanceIdError() noexcept override = default;
-
-    /** @brief Construct with an error code. */
-    explicit InstanceIdError(int rc) : rc_(rc), msg_(rcToMsg(rc)) {}
-
-    /** @brief Construct with an error code and a string message (copied). */
-    InstanceIdError(int rc, const std::string& m) : rc_(rc), msg_(m) {}
-
-    /** @brief Construct with an error code and a string message (moved). */
-    InstanceIdError(int rc, std::string&& m) : rc_(rc), msg_(std::move(m)) {}
-
-    /** @brief Get the error code. */
-    int rc() const noexcept
-    {
-        return rc_;
-    }
-
-    /** @brief Get the error message. */
-    const std::string& msg() const noexcept
-    {
-        return msg_;
-    }
-
-    /** @brief Convert an error code to a message. */
-    static std::string rcToMsg(int rc)
-    {
-        switch (rc)
-        {
-            case -EAGAIN:
-                return "No free instance ids";
-            default:
-                return std::system_category().message(rc);
-        }
-    }
-
-    /** @brief Get the error message (for std::exception). */
-    const char* what() const noexcept override
-    {
-        return msg_.c_str();
-    }
-
-  private:
-    int rc_;
-    std::string msg_;
-};
-
 /** @class InstanceId
  *  @brief Implementation of PLDM instance id as per DSP0240 v1.0.0
  */
@@ -111,19 +53,22 @@
 
     /** @brief Allocate an instance ID for the given terminus
      *  @param[in] tid - the terminus ID the instance ID is associated with
-     *  @return - PLDM instance id on success, or InstanceIdError on failure
+     *  @return - PLDM instance id or -EAGAIN if there are no available instance
+     *            IDs
      */
-    std::expected<uint8_t, InstanceIdError> next(uint8_t tid)
+    uint8_t next(uint8_t tid)
     {
         uint8_t id;
         int rc = pldm_instance_id_alloc(pldmInstanceIdDb, tid, &id);
 
+        if (rc == -EAGAIN)
+        {
+            throw std::runtime_error("No free instance ids");
+        }
+
         if (rc)
         {
-            return std::unexpected(
-                InstanceIdError{rc, "Failed to allocate instance ID for EID " +
-                                        std::to_string(tid) + ": " +
-                                        InstanceIdError::rcToMsg(rc)});
+            throw std::system_category().default_error_condition(rc);
         }
 
         return id;
diff --git a/common/utils.hpp b/common/utils.hpp
index bccd929..358d0d7 100644
--- a/common/utils.hpp
+++ b/common/utils.hpp
@@ -1,6 +1,5 @@
 #pragma once
 
-#include "instance_id.hpp"
 #include "types.hpp"
 
 #include <libpldm/base.h>
@@ -21,7 +20,6 @@
 #include <cstdint>
 #include <deque>
 #include <exception>
-#include <expected>
 #include <filesystem>
 #include <iostream>
 #include <map>
@@ -166,28 +164,6 @@
     return bcd;
 }
 
-/**
- * @brief Unwraps the result of InstanceId allocation and logs errors.
- *
- * Logs errors if present, but always returns the original result so the caller
- * can choose to handle the error (return, throw, etc).
- *
- * @tparam T      Instance ID value type.
- * @param[in] result  The result from InstanceIdDb::next().
- * @return std::expected<T, InstanceIdError>
- *     Returns the original result (value or error).
- */
-template <typename T>
-std::expected<T, pldm::InstanceIdError> getInstanceId(
-    const std::expected<T, pldm::InstanceIdError>& result)
-{
-    if (!result)
-    {
-        std::cerr << result.error().msg() << std::endl;
-    }
-    return result;
-}
-
 struct DBusMapping
 {
     std::string objectPath;   //!< D-Bus object path