- Replaced the "configure-cpu-policy" command with a "configure" command which supports either cpu or resource policies. Closes task #34
git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@1057 3ecf2c5c-341e-0410-92b4-d18e462d057c
This commit is contained in:
parent
e4d359304c
commit
e91cea9676
|
@ -24,6 +24,7 @@
|
|||
|
||||
#include <sgpemv2/cpu_policies_gatekeeper.hh>
|
||||
#include <sgpemv2/cpu_policy_manager.hh>
|
||||
#include <sgpemv2/resource_policy.hh>
|
||||
#include <sgpemv2/policy_parameters.hh>
|
||||
#include <sgpemv2/history.hh>
|
||||
#include <sgpemv2/simulation.hh>
|
||||
|
@ -509,31 +510,30 @@ TextSimulation::on_stop(const Tokens& arguments)
|
|||
Simulation::get_instance().stop();
|
||||
}
|
||||
|
||||
template<typename PolicyType>
|
||||
void
|
||||
TextSimulation::on_configure_cpu_policy(const Tokens& arguments)
|
||||
TextSimulation::configure_policy(PolicyType& policy)
|
||||
{
|
||||
check_arguments_num(arguments, 0);
|
||||
|
||||
CPUPolicy* policy = Simulation::get_instance().get_policy();
|
||||
|
||||
if (policy == NULL)
|
||||
{
|
||||
p_stderr(_("ERROR: No policy actually selected for the simulation\n"));
|
||||
return;
|
||||
}
|
||||
|
||||
PolicyParameters& parameters = policy->get_parameters();
|
||||
|
||||
p_stdout(_("Please provide a value for each attribute:\n"));
|
||||
p_stdout(_("Mandatory arguments are marked with an asterisk (*)\n\n"));
|
||||
|
||||
p_stdout(_("Integer arguments:\n"));
|
||||
PolicyParameters& parameters = policy.get_parameters();
|
||||
|
||||
typedef map<ustring, PolicyParameters::Parameter<int> > IntParams;
|
||||
typedef map<ustring, PolicyParameters::Parameter<float> > FloatParams;
|
||||
typedef map<ustring, PolicyParameters::Parameter<ustring> > StringParams;
|
||||
|
||||
IntParams int_params = parameters.get_registered_int_parameters();
|
||||
FloatParams float_params = parameters.get_registered_float_parameters();
|
||||
StringParams string_params = parameters.get_registered_string_parameters();
|
||||
|
||||
if(int_params.size() > 0 || float_params.size() > 0 || string_params.size() > 0)
|
||||
{
|
||||
p_stdout(_("Please provide a value for each attribute:\n"));
|
||||
p_stdout(_("Mandatory arguments are marked with an asterisk (*)\n\n"));
|
||||
}
|
||||
else
|
||||
p_stdout(_("Nothing to configure for this policy.\n"));
|
||||
|
||||
if(int_params.size() > 0)
|
||||
p_stdout(_("Integer arguments:\n"));
|
||||
|
||||
for (IntParams::iterator it = int_params.begin(); it != int_params.end();)
|
||||
{
|
||||
|
@ -547,14 +547,14 @@ TextSimulation::on_configure_cpu_policy(const Tokens& arguments)
|
|||
++it;
|
||||
}
|
||||
|
||||
p_stdout(_("\nFloating-point arguments:\n"));
|
||||
|
||||
// NOTE this piece code is a verbatim copy of the one above.
|
||||
// I tried solving this issue by using templates, but to make
|
||||
// it work will require adding to PolicyParameters a member template
|
||||
// method with 2 specializations...
|
||||
|
||||
FloatParams float_params = parameters.get_registered_float_parameters();
|
||||
|
||||
if(float_params.size() > 0)
|
||||
p_stdout(_("\nFloating-point arguments:\n"));
|
||||
|
||||
for (FloatParams::iterator it = float_params.begin(); it != float_params.end();)
|
||||
{
|
||||
|
@ -569,10 +569,9 @@ TextSimulation::on_configure_cpu_policy(const Tokens& arguments)
|
|||
++it;
|
||||
}
|
||||
|
||||
if(string_params.size() > 0)
|
||||
p_stdout(_("\nString arguments:\n"));
|
||||
|
||||
StringParams string_params = parameters.get_registered_string_parameters();
|
||||
|
||||
for (StringParams::iterator it = string_params.begin(); it != string_params.end();)
|
||||
{
|
||||
PolicyParameters::Parameter<ustring> &p = it->second;
|
||||
|
@ -588,6 +587,36 @@ TextSimulation::on_configure_cpu_policy(const Tokens& arguments)
|
|||
|
||||
}
|
||||
|
||||
void
|
||||
TextSimulation::on_configure(const Tokens& arguments)
|
||||
{
|
||||
if(!check_arguments_num(arguments, 1))
|
||||
return;
|
||||
|
||||
ustring what = arguments[0];
|
||||
|
||||
if(what == "cpu-policy")
|
||||
{
|
||||
CPUPolicy* policy = Simulation::get_instance().get_policy();
|
||||
|
||||
if (policy == NULL)
|
||||
p_stderr(_("ERROR: No CPU policy actually selected for the simulation\n"));
|
||||
else
|
||||
configure_policy(*policy);
|
||||
}
|
||||
else if(what == "resource-policy")
|
||||
{
|
||||
ResourcePolicy* policy = Simulation::get_instance().get_resource_policy();
|
||||
|
||||
if (policy == NULL)
|
||||
p_stderr(_("ERROR: No resource policy actually selected for the simulation\n"));
|
||||
else
|
||||
configure_policy(*policy);
|
||||
}
|
||||
else
|
||||
p_stderr(ustring(_("ERROR: Nothing to configure for ")) + what + "\n");
|
||||
}
|
||||
|
||||
void
|
||||
TextSimulation::on_help(const Tokens& arguments)
|
||||
{
|
||||
|
@ -713,7 +742,7 @@ TextSimulation::on_get(const Tokens& arguments)
|
|||
p_stdout(oss.str());
|
||||
}
|
||||
else
|
||||
p_stderr(_("ERROR: invalid attribute name. Accepted are: simulation-tick, continuous\n"));
|
||||
p_stderr(_("ERROR: invalid attribute name.\n"));
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -821,7 +850,7 @@ TextSimulation::on_set(const Tokens& arguments)
|
|||
}
|
||||
}
|
||||
else
|
||||
p_stderr(_("ERROR: invalid attribute name. Accepted are: simulation-tick, cpu-policy, continuous\n"));
|
||||
p_stderr(_("ERROR: invalid attribute name.\n"));
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1564,7 +1593,7 @@ TextSimulation::parse_command(TextSimulation& sim, const ustring& str)
|
|||
command_handlers["STOP"] = &TextSimulation::on_stop;
|
||||
command_handlers["PAUSE"] = &TextSimulation::on_pause;
|
||||
command_handlers["JUMPTO"] = &TextSimulation::on_jumpto;
|
||||
command_handlers["CONFIGURE-CPU-POLICY"] = &TextSimulation::on_configure_cpu_policy;
|
||||
command_handlers["CONFIGURE"] = &TextSimulation::on_configure;
|
||||
command_handlers["HELP"] = &TextSimulation::on_help;
|
||||
command_handlers["GET"] = &TextSimulation::on_get;
|
||||
command_handlers["SET"] = &TextSimulation::on_set;
|
||||
|
|
|
@ -75,11 +75,14 @@ namespace sgpem
|
|||
void show(const Container& entities);
|
||||
template <typename T>
|
||||
void get_parameter(CommandParameter<T>& parameter);
|
||||
template <typename PolicyType>
|
||||
void configure_policy(PolicyType& policy);
|
||||
|
||||
void on_run(const Tokens& arguments);
|
||||
void on_pause(const Tokens& arguments);
|
||||
void on_jumpto(const Tokens& arguments);
|
||||
void on_stop(const Tokens& arguments);
|
||||
void on_configure_cpu_policy(const Tokens& arguments);
|
||||
void on_configure(const Tokens& arguments);
|
||||
void on_help(const Tokens& arguments);
|
||||
void on_quit(const Tokens& arguments);
|
||||
void on_get(const Tokens& arguments);
|
||||
|
|
Loading…
Reference in New Issue