diff --git a/src/users/log_user_stat.cpp b/src/users/log_user_stat.cpp index fc4ecbc12149ee3f2f33fd55584f3b204e5eaf5e..d9c82133f0e6ba8b3b622e02fd02221675ffe453 100644 --- a/src/users/log_user_stat.cpp +++ b/src/users/log_user_stat.cpp @@ -1,6 +1,6 @@ -#include "broker/log_user_stat.hpp" +#include "users/log_user_stat.hpp" #include "../pempek_assert.hpp" -BehaviorStat::BehaviorStat(Job* job, +BehaviorStat::BehaviorStat(shared_ptr<Job> job, std::string behavior_name,double time_delayed){ this->job = job; this->behavior_name = behavior_name; @@ -41,7 +41,7 @@ LoggerUserStat::LoggerUserStat(std::string log_folder) begin_to_write=0; } -void LoggerUserStat::add_stat(Job *job,std::string behavior_name, double time_delayed){ +void LoggerUserStat::add_stat(shared_ptr<Job> job,std::string behavior_name, double time_delayed){ BehaviorStat to_add = BehaviorStat(job,behavior_name,time_delayed); behaviors.push_back(to_add); if(behaviors.size()-begin_to_write >= write_threshold){ diff --git a/src/users/log_user_stat.hpp b/src/users/log_user_stat.hpp index 31bde846abaea5e1cb8962509ea1d235fa6fe674..3f0cb79f34aa93497e05d01ae7f5bb11d3ccad69 100644 --- a/src/users/log_user_stat.hpp +++ b/src/users/log_user_stat.hpp @@ -6,13 +6,13 @@ /** * library dedicated to logging user_behavior */ - +using namespace std; struct BehaviorStat { - Job *job; + shared_ptr<Job> job; std::string behavior_name; double time_delayed; double submission_time; - BehaviorStat( Job* job, + BehaviorStat( shared_ptr<Job> job, std::string behavior_name,double time_delayed); std::vector<std::string> split_id(); boost::basic_format<char> format(); @@ -24,7 +24,7 @@ struct BehaviorStat { class LoggerUserStat { public : LoggerUserStat(std::string log_folder); - void add_stat(Job *job,std::string behavior_name, double time_delayed); + void add_stat(shared_ptr<Job> job,std::string behavior_name, double time_delayed); void log_stat(); protected : bool put_header; diff --git a/src/users/user_replay.cpp b/src/users/user_replay.cpp index c9d54201025a3a0d039816a4fde6a4774edb0184..65e7c32f8fbd358e52ffe9ef0567241636e9f664 100644 --- a/src/users/user_replay.cpp +++ b/src/users/user_replay.cpp @@ -458,7 +458,7 @@ DMUserMultiBehavior::~DMUserMultiBehavior() } void DMUserMultiBehavior::jobs_to_submit( - double date, std::list<Job *> &jobs, std::list<Profile *> &profiles) + double date, std::list<shared_ptr<Job>> &jobs, std::list< const Profile *> &profiles) { DMUserRenonce::jobs_to_submit(date, jobs, profiles); } @@ -558,7 +558,7 @@ bool DMUserDegrad::handle_job(double date, shared_ptr<Job> job, Profile *profile return true; } -bool DMUserRenonce::renonce_job(shared_ptr<Job> job,Profile *profile) +bool DMUserRenonce::renonce_job(shared_ptr<Job> job) { /* Signals that the job must not be executed and delete it from the * original queue */ @@ -570,7 +570,7 @@ bool DMUserRenonce::renonce_job(shared_ptr<Job> job,Profile *profile) += job->nb_requested_resources * std::stol(job->profile); return false; } -bool DMUserRenonce::handle_job(double date, Job *job, Profile *profile) +bool DMUserRenonce::handle_job(double date, shared_ptr<Job> job, Profile *profile) { if (dm_window->date_in_dm_window(date)) { @@ -604,7 +604,7 @@ bool DMUserDelay::delay_job(shared_ptr<Job> job) /* Return "Do not execute now" */ return false; } -bool DMUserDelay::handle_job(double date, Job *job, Profile *profile) +bool DMUserDelay::handle_job(double date, shared_ptr<Job> job, Profile *profile) { if (dm_window->date_in_dm_window(date)) { @@ -618,7 +618,7 @@ bool DMUserDelay::handle_job(double date, Job *job, Profile *profile) } } -bool DMUserMultiBehavior::C_you_later_job(double date, double next_time,Job* job) +bool DMUserMultiBehavior::C_you_later_job(double date, double next_time,shared_ptr<Job> job) { /* Log... */ log_behavior(job,"C_you_later",next_time); @@ -630,14 +630,16 @@ bool DMUserMultiBehavior::C_you_later_job(double date, double next_time,Job* job /* Put job back in the queue and sort */ SortableJobOrder::UpdateInformation update_info(0); - original_trace->insert_job(job); + Job *j = new Job(); + *j = *job; + original_trace->insert_job(j); original_trace->sort_queue(&update_info); /* Return "Do not execute now" */ return false; } -bool DMUserMultiBehavior::red_window_behavior(double date,Job* job,Profile *profile) +bool DMUserMultiBehavior::red_window_behavior(double date,shared_ptr<Job> job,Profile *profile) { /* * We decide at random the behavior @@ -686,7 +688,7 @@ bool DMUserMultiBehavior::red_window_behavior(double date,Job* job,Profile *prof return true; } } -bool DMUserMultiBehavior::yellow_window_behavior(Job* job,Profile *profile){ +bool DMUserMultiBehavior::yellow_window_behavior(shared_ptr<Job> job,Profile *profile){ /* * We decide at random the behavior (rigid, degrad, reconfig) * that will be done on this job @@ -722,7 +724,7 @@ bool DMUserMultiBehavior::yellow_window_behavior(Job* job,Profile *profile){ } } -void DMUserMultiBehavior::log_behavior(Job *job, std::string behavior_name, double delay_time) +void DMUserMultiBehavior::log_behavior(shared_ptr<Job> job, std::string behavior_name, double delay_time) { if(logger){ logger->add_stat(job,behavior_name,delay_time); @@ -759,7 +761,7 @@ bool DMUserMultiBehavior::is_in_yellow_window(double date){ } return false; } -bool DMUserMultiBehavior::handle_job(double date, Job *job, Profile *profile) +bool DMUserMultiBehavior::handle_job(double date, shared_ptr<Job> job, Profile *profile) { /* * function called each time the user want to submit a job it does the following : diff --git a/src/users/user_replay.hpp b/src/users/user_replay.hpp index 92fc44cd11067d5029d7e5f94b748341407f12b9..00ed7d9bfadcef54816866c9669ce8b5db648d49 100644 --- a/src/users/user_replay.hpp +++ b/src/users/user_replay.hpp @@ -4,7 +4,7 @@ #include "users/user.hpp" #include <random> #include "queue.hpp" -#include "broker/log_user_stat.hpp" +#include "users/log_user_stat.hpp" /** * The demand response window during which the users are enclined to reduce * their consumption. (semi-closed interval [inf, sup[) @@ -229,10 +229,10 @@ class DMUserMultiBehavior : public DMUserRenonce, public DMUserDelay, double yellow_prob_total; double next_submission(); void jobs_to_submit( - double date, std::list<Job *> &jobs, std::list<Profile *> &profiles); + double date, std::list<shared_ptr<Job> > &jobs, std::list< const Profile *> &profiles); bool is_in_yellow_window(double date); bool is_in_red_window(double date); - void log_behavior(Job* job, std::string behavior_name, double delay_time); + void log_behavior(shared_ptr<Job> job, std::string behavior_name, double delay_time); protected: DMWindow_list *yellow_windows; DMWindow_list * red_windows; @@ -242,8 +242,8 @@ class DMUserMultiBehavior : public DMUserRenonce, public DMUserDelay, std::uniform_real_distribution<double> distribution = std::uniform_real_distribution<double>(0.0, 1.0); LoggerUserStat *logger = nullptr ; - bool C_you_later_job(double date, double next_time,Job* job); - bool handle_job(double date,Job *job,Profile *profile); - bool red_window_behavior(double date,Job *job, Profile *profile); - bool yellow_window_behavior(Job *job, Profile *profile); + bool C_you_later_job(double date, double next_time,shared_ptr<Job> job); + bool handle_job(double date,shared_ptr<Job> job,Profile *profile); + bool red_window_behavior(double date,shared_ptr<Job> job, Profile *profile); + bool yellow_window_behavior(shared_ptr<Job> job, Profile *profile); }; \ No newline at end of file