Reduce multiple oem_ibm entry points in pldmd

Abstract the custom method of `OEM-IBM` into the oem-ibm.hpp file
to prevent the continuous increase of custom code and reduce multiple
`OEM-IBM` entry points in pldmd.

Tested: enabled oem-ibm and built pldm successfully.

Signed-off-by: George Liu <liuxiwei@inspur.com>
Change-Id: Ieddb8d12281553e70bdb1c333bd29425c9d14fb0
diff --git a/libpldmresponder/fru.hpp b/libpldmresponder/fru.hpp
index 40a1517..a0757e6 100644
--- a/libpldmresponder/fru.hpp
+++ b/libpldmresponder/fru.hpp
@@ -66,11 +66,9 @@
     FruImpl(const std::string& configPath,
             const std::filesystem::path& fruMasterJsonPath, pldm_pdr* pdrRepo,
             pldm_entity_association_tree* entityTree,
-            pldm_entity_association_tree* bmcEntityTree,
-            pldm::responder::oem_fru::Handler* oemFruHandler) :
+            pldm_entity_association_tree* bmcEntityTree) :
         parser(configPath, fruMasterJsonPath),
-        pdrRepo(pdrRepo), entityTree(entityTree), bmcEntityTree(bmcEntityTree),
-        oemFruHandler(oemFruHandler)
+        pdrRepo(pdrRepo), entityTree(entityTree), bmcEntityTree(bmcEntityTree)
     {}
 
     /** @brief Total length of the FRU table in bytes, this includes the pad
@@ -201,6 +199,15 @@
      */
     int setFRUTable(const std::vector<uint8_t>& fruData);
 
+    /* @brief Method to set the oem platform handler in fru handler class
+     *
+     * @param[in] handler - oem fru handler
+     */
+    inline void setOemFruHandler(pldm::responder::oem_fru::Handler* handler)
+    {
+        oemFruHandler = handler;
+    }
+
   private:
     uint16_t nextRSI()
     {
@@ -224,7 +231,7 @@
     pldm_pdr* pdrRepo;
     pldm_entity_association_tree* entityTree;
     pldm_entity_association_tree* bmcEntityTree;
-    pldm::responder::oem_fru::Handler* oemFruHandler;
+    pldm::responder::oem_fru::Handler* oemFruHandler = nullptr;
     dbus::ObjectValueTree objects;
 
     std::map<dbus::ObjectPath, pldm_entity_node*> objToEntityNode{};
@@ -255,10 +262,8 @@
     Handler(const std::string& configPath,
             const std::filesystem::path& fruMasterJsonPath, pldm_pdr* pdrRepo,
             pldm_entity_association_tree* entityTree,
-            pldm_entity_association_tree* bmcEntityTree,
-            pldm::responder::oem_fru::Handler* oemFruHandler) :
-        impl(configPath, fruMasterJsonPath, pdrRepo, entityTree, bmcEntityTree,
-             oemFruHandler)
+            pldm_entity_association_tree* bmcEntityTree) :
+        impl(configPath, fruMasterJsonPath, pdrRepo, entityTree, bmcEntityTree)
     {
         handlers.emplace(
             PLDM_GET_FRU_RECORD_TABLE_METADATA,
@@ -340,6 +345,15 @@
      */
     Response setFRURecordTable(const pldm_msg* request, size_t payloadLength);
 
+    /* @brief Method to set the oem platform handler in fru handler class
+     *
+     * @param[in] handler - oem fru handler
+     */
+    void setOemFruHandler(pldm::responder::oem_fru::Handler* handler)
+    {
+        impl.setOemFruHandler(handler);
+    }
+
     using Table = std::vector<uint8_t>;
 
   private: