- Completed the SHOW command with the best I can do at the actual stage of development
- Layout of output is not tested so it will surely look odd the first time it is run... git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@757 3ecf2c5c-341e-0410-92b4-d18e462d057c
This commit is contained in:
parent
8894e31222
commit
4bece17f36
|
@ -26,6 +26,8 @@
|
||||||
#include "backend/dynamic_process.hh"
|
#include "backend/dynamic_process.hh"
|
||||||
#include "backend/dynamic_resource.hh"
|
#include "backend/dynamic_resource.hh"
|
||||||
#include "backend/dynamic_thread.hh"
|
#include "backend/dynamic_thread.hh"
|
||||||
|
#include "backend/dynamic_request.hh"
|
||||||
|
#include "backend/dynamic_sub_request.hh"
|
||||||
|
|
||||||
#include "text_simulation.hh"
|
#include "text_simulation.hh"
|
||||||
|
|
||||||
|
@ -76,7 +78,7 @@ TextSimulation::check_arguments_num(const Tokens& arguments, unsigned int num)
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void
|
void
|
||||||
TextSimulation::show(const vector<T>& entities)
|
TextSimulation::show(const vector<T*>& entities)
|
||||||
{
|
{
|
||||||
ostringstream oss;
|
ostringstream oss;
|
||||||
|
|
||||||
|
@ -87,6 +89,35 @@ TextSimulation::show(const vector<T>& entities)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace sgpem
|
||||||
|
{
|
||||||
|
template <>
|
||||||
|
void
|
||||||
|
TextSimulation::show<DynamicRequest>(const vector<DynamicRequest*>& entities)
|
||||||
|
{
|
||||||
|
ostringstream oss;
|
||||||
|
|
||||||
|
for(unsigned int i = 0; i < entities.size(); ++i)
|
||||||
|
{
|
||||||
|
oss << i + 1 << ". instant: " << entities[i]->get_core().get_instant() << endl;
|
||||||
|
p_stdout(oss.str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template <>
|
||||||
|
void
|
||||||
|
TextSimulation::show<DynamicSubRequest>(const vector<DynamicSubRequest*>& entities)
|
||||||
|
{
|
||||||
|
ostringstream oss;
|
||||||
|
|
||||||
|
for(unsigned int i = 0; i < entities.size(); ++i)
|
||||||
|
{
|
||||||
|
oss << i + 1 << ". resource: " << entities[i]->get_core().get_resource_key() << endl;
|
||||||
|
p_stdout(oss.str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
TextSimulation::on_run(const Tokens& arguments)
|
TextSimulation::on_run(const Tokens& arguments)
|
||||||
{
|
{
|
||||||
|
@ -501,8 +532,8 @@ TextSimulation::on_show_threads(const Tokens& arguments)
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
unsigned int pid = string_to<int>(process);
|
int pid = string_to<int>(process) - 1;
|
||||||
threads = processes.at(pid - 1)->get_dynamic_threads();
|
threads = processes.at(pid)->get_dynamic_threads();
|
||||||
}
|
}
|
||||||
catch(domain_error e)
|
catch(domain_error e)
|
||||||
{
|
{
|
||||||
|
@ -521,24 +552,109 @@ TextSimulation::on_show_threads(const Tokens& arguments)
|
||||||
void
|
void
|
||||||
TextSimulation::on_show_requests(const Tokens& arguments)
|
TextSimulation::on_show_requests(const Tokens& arguments)
|
||||||
{
|
{
|
||||||
p_stderr(_("\nFIXME: Not implemented\n"));
|
if(!check_arguments_num(arguments, 2))
|
||||||
|
return;
|
||||||
|
|
||||||
|
ustring process = arguments[0];
|
||||||
|
ustring thread = arguments[1];
|
||||||
|
|
||||||
|
// FIXME need to get the true arrays. i think it's
|
||||||
|
// still not possible at the actual stage of development
|
||||||
|
vector<DynamicProcess*> processes;
|
||||||
|
vector<DynamicRequest*> requests;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int pid = string_to<int>(process) - 1;
|
||||||
|
int tid = string_to<int>(thread) - 1;
|
||||||
|
|
||||||
|
vector<DynamicThread*> threads = processes.at(pid)->get_dynamic_threads();
|
||||||
|
requests = threads.at(tid)->get_dynamic_requests();
|
||||||
|
}
|
||||||
|
catch(domain_error e)
|
||||||
|
{
|
||||||
|
p_stderr(_("ERROR: provided identifier(s) not a valid integer\n"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
catch(out_of_range e)
|
||||||
|
{
|
||||||
|
p_stderr(_("ERROR: the identifier(s) do not belong to an existing entity\n"));
|
||||||
|
}
|
||||||
|
|
||||||
|
show(requests);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
TextSimulation::on_show_subrequests(const Tokens& arguments)
|
TextSimulation::on_show_subrequests(const Tokens& arguments)
|
||||||
{
|
{
|
||||||
p_stderr(_("\nFIXME: Not implemented\n"));
|
if(!check_arguments_num(arguments, 3))
|
||||||
|
return;
|
||||||
|
|
||||||
|
ustring process = arguments[0];
|
||||||
|
ustring thread = arguments[1];
|
||||||
|
ustring request = arguments[2];
|
||||||
|
|
||||||
|
// FIXME need to get the true arrays. i think it's
|
||||||
|
// still not possible at the actual stage of development
|
||||||
|
vector<DynamicProcess*> processes;
|
||||||
|
vector<DynamicSubRequest*> subrequests;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int pid = string_to<int>(process) - 1;
|
||||||
|
int tid = string_to<int>(thread) - 1;
|
||||||
|
int rid = string_to<int>(request) - 1;
|
||||||
|
|
||||||
|
vector<DynamicThread*> threads = processes.at(pid)->get_dynamic_threads();
|
||||||
|
vector<DynamicRequest*> requests = threads.at(tid)->get_dynamic_requests();
|
||||||
|
subrequests = requests.at(rid)->get_dynamic_subrequests();
|
||||||
|
}
|
||||||
|
catch(domain_error e)
|
||||||
|
{
|
||||||
|
p_stderr(_("ERROR: provided identifier(s) not a valid integer\n"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
catch(out_of_range e)
|
||||||
|
{
|
||||||
|
p_stderr(_("ERROR: the identifier(s) do not belong to an existing entity\n"));
|
||||||
|
}
|
||||||
|
|
||||||
|
show(subrequests);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
TextSimulation::on_show_cpu_policies(const Tokens& arguments)
|
TextSimulation::on_show_cpu_policies(const Tokens& arguments)
|
||||||
{
|
{
|
||||||
p_stderr(_("\nFIXME: Not implemented\n"));
|
typedef vector<PolicyManager*> ManagerVec;
|
||||||
|
typedef vector<Policy*>::iterator PolicyIt;
|
||||||
|
|
||||||
|
check_arguments_num(arguments, 0);
|
||||||
|
|
||||||
|
PoliciesGatekeeper& gatekeeper = PoliciesGatekeeper::get_instance();
|
||||||
|
|
||||||
|
ManagerVec managers = gatekeeper.get_registered();
|
||||||
|
|
||||||
|
unsigned int index = 1;
|
||||||
|
for(ManagerVec::iterator it = managers.begin(); it != managers.end(); ++it)
|
||||||
|
{
|
||||||
|
vector<Policy*> policies = (*it)->get_avail_policies();
|
||||||
|
for(PolicyIt it = policies.begin(); it != policies.end(); ++it)
|
||||||
|
{
|
||||||
|
ostringstream oss;
|
||||||
|
oss << index << ". " << (*it)->get_name() << endl;
|
||||||
|
oss << "\t" << (*it)->get_description() << endl;
|
||||||
|
|
||||||
|
p_stdout(oss.str());
|
||||||
|
}
|
||||||
|
++index;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
TextSimulation::on_show_resource_policies(const Tokens& arguments)
|
TextSimulation::on_show_resource_policies(const Tokens& arguments)
|
||||||
{
|
{
|
||||||
|
// Waiting for the coder to implementat resource policies
|
||||||
|
// But wait a moment, the coder is me!!!
|
||||||
p_stderr(_("\nFIXME: Not implemented\n"));
|
p_stderr(_("\nFIXME: Not implemented\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -124,7 +124,7 @@ namespace sgpem
|
||||||
private:
|
private:
|
||||||
bool check_arguments_num(const Tokens& arguments, unsigned int num);
|
bool check_arguments_num(const Tokens& arguments, unsigned int num);
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void show(const std::vector<T>& entities);
|
void show(const std::vector<T*>& entities);
|
||||||
void on_run(const Tokens& arguments);
|
void on_run(const Tokens& arguments);
|
||||||
void on_pause(const Tokens& arguments);
|
void on_pause(const Tokens& arguments);
|
||||||
void on_stop(const Tokens& arguments);
|
void on_stop(const Tokens& arguments);
|
||||||
|
|
Loading…
Reference in New Issue