diff options
author | Vishwanatha Subbanna <vishwa@linux.vnet.ibm.com> | 2017-06-28 14:05:57 +0530 |
---|---|---|
committer | Vishwanatha Subbanna <vishwa@linux.vnet.ibm.com> | 2017-07-04 12:26:23 +0530 |
commit | 2180b2daa8f2207c37308a09e12d08ed3317205c (patch) | |
tree | 5d09abf8caac0fa42a15af59727a1a11d473edb0 /occ_pass_through.hpp | |
parent | fd358d18b8b7f73204cc482f3b29f49a50fda214 (diff) | |
download | openpower-occ-control-2180b2daa8f2207c37308a09e12d08ed3317205c.tar.gz openpower-occ-control-2180b2daa8f2207c37308a09e12d08ed3317205c.zip |
Change occ control service name
Currently, only thing that OCC controller does is create PassThrough
objects. However, there is a need now to create OCC Status objects
and hence some restructuring is needed to consume that.
Since OCC control now is doing more than one thing, service name is
changed to map to that.
Change-Id: I466979a873d6f14385eb59d0e9d9f3a8b3f95a9b
Signed-off-by: Vishwanatha Subbanna <vishwa@linux.vnet.ibm.com>
Diffstat (limited to 'occ_pass_through.hpp')
-rw-r--r-- | occ_pass_through.hpp | 93 |
1 files changed, 0 insertions, 93 deletions
diff --git a/occ_pass_through.hpp b/occ_pass_through.hpp index c9f6566..f2f78c7 100644 --- a/occ_pass_through.hpp +++ b/occ_pass_through.hpp @@ -1,107 +1,15 @@ #pragma once #include <string> -#include <cstring> -#include <map> -#include <vector> -#include <experimental/filesystem> -#include <unistd.h> #include <sdbusplus/bus.hpp> -#include <functional> #include <sdbusplus/server/object.hpp> #include <org/open_power/OCC/PassThrough/server.hpp> -#include "config.h" #include "file.hpp" -namespace sdbusRule = sdbusplus::bus::match::rules; - namespace open_power { namespace occ { -namespace pass_through -{ - -class PassThrough; - -namespace manager -{ - -/** @class Manager - * @brief Builds and manages OCC pass-through objects - */ -struct Manager -{ - public: - Manager() = delete; - Manager(const Manager&) = delete; - Manager& operator=(const Manager&) = delete; - Manager(Manager&&) = default; - Manager& operator=(Manager&&) = default; - ~Manager() = default; - - /** @brief Ctor - Add OCC pass-through objects on the bus. Create - * OCC objects when corresponding CPU inventory is created. - * @param[in] bus - handle to the bus - */ - Manager(sdbusplus::bus::bus& bus): - bus(bus) - { - for (auto id = 0; id < MAX_CPUS; ++id) - { - auto path = std::string(CPU_PATH) + std::to_string(id); - cpuMatches.emplace_back( - bus, - sdbusRule::interfacesAdded() + - sdbusRule::argNpath(0, path), - std::bind(std::mem_fn(&Manager::cpuCreated), - this, std::placeholders::_1)); - } - } - - /** @brief Callback that responds to cpu creation in the inventory - - * by creating the occ passthrough object. - * - * @param[in] msg - bus message - * - * @returns 0 to indicate success - */ - int cpuCreated(sdbusplus::message::message& msg) - { - namespace fs = std::experimental::filesystem; - - sdbusplus::message::object_path o; - msg.read(o); - fs::path cpuPath(std::string(std::move(o))); - auto cpu = cpuPath.filename(); - - auto occPath = fs::path(OCC_PASS_THROUGH_ROOT); - std::string name{cpu.c_str()}; - auto index = name.find(CPU_NAME); - name.replace(index, std::strlen(CPU_NAME), OCC_NAME); - occPath /= name; - - objects.emplace_back( - std::make_unique<PassThrough>( - bus, - occPath.c_str())); - - return 0; - } - - private: - /** @brief reference to the bus */ - sdbusplus::bus::bus& bus; - - /** @brief OCC pass-through objects */ - std::vector<std::unique_ptr<PassThrough>> objects; - - /** @brief sbdbusplus match objects */ - std::vector<sdbusplus::bus::match_t> cpuMatches; -}; - -} // namespace manager - using Iface = sdbusplus::server::object::object< sdbusplus::org::open_power::OCC::server::PassThrough>; @@ -153,6 +61,5 @@ class PassThrough : public Iface int openDevice(); }; -} // namespace pass_through } // namespace occ } // namespace open_power |