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); } }
sensor_loader::sensor_loader() : _path("./sensors/") { load_sensors(); }