コード例 #1
0
const gal::PowerState& ServiceElementLCP::get_power_state(const std::string& resource_id, PowerStateId ps)
{
    if (resource_id != "0")
    {
        throw NonExistentEnergyAwareState(std::string(R"(Energy Aware State ")") + std::to_string(ps) + R"(" not found.)");
    }

    auto it = power_states_.find(ps);

    if (it != std::end(power_states_))
    {
        return it->second;
    }

    throw NonExistentEnergyAwareState(std::string(R"(Energy Aware State ")") + std::to_string(ps) + R"(" not found.)");
}

void ServiceElementLCP::read_power_states()
{
    pugi::xml_document doc;
    auto result = doc.load_file(util::config_file_path("gal").c_str());

    if (!result)
    {
        tnt::ConfigurationError(std::string("ServiceElementLCP: ") + result.description());
    }

    auto root = doc.child("gal");
    assert(root);

    max_power_consumption_ = root.attribute("max_power_consumption").as_double();

    auto ps = root.child("EnergyAwareStates");

    provisioned_power_state_ = committed_power_state_ = default_power_state_ = ps.attribute("default").as_int();

    auto states = load_power_states(ps);

    for (const auto& state : states)
    {
        power_states_[state.id] = state;
    }

    auto sr = root.child("SensorResources");

    if (sr)
    {
        device_sensors_ = load_sensors(sr);
    }
}
コード例 #2
0
ファイル: sensor_loader.cpp プロジェクト: cpp11nullptr/vikki
	sensor_loader::sensor_loader()
		: _path("./sensors/")
	{
		load_sensors();
	}