Skip to content
Snippets Groups Projects
Commit fde56e7d authored by jgatt's avatar jgatt
Browse files

change in logging now we create a copy of the job state for logging

parent 41445b75
No related branches found
No related tags found
1 merge request!16Merge request multibehavior
#include "users/log_user_stat.hpp"
#include <utility>
#include "../pempek_assert.hpp"
BehaviorStat::BehaviorStat(
shared_ptr<Job> job, std::string behavior_name, long time_delayed){
this->job = job;
this->behavior_name = behavior_name;
this->job = std::move(job);
this->behavior_name = std::move(behavior_name);
this->time_delayed = time_delayed;
}
std::vector<std::string> BehaviorStat::split_id(){
std::string job_id = job->id;
std::vector<std::string> splitting;
splitting.push_back("");
splitting.emplace_back("");
for (std::string::size_type i = 0; i < job_id.length(); i++){
if (job_id[i] == '!'){
splitting.push_back("");
for (char i : job_id){
if (i == '!'){
splitting.emplace_back("");
}
else{
splitting.back() += job_id[i];
splitting.back() += i;
}
}
......@@ -33,14 +35,17 @@ boost::basic_format<char> BehaviorStat::format(){
}
LoggerUserStat::LoggerUserStat(std::string log_folder){
this->log_folder = log_folder;
this->log_folder = std::move(log_folder);
put_header = true;
write_threshold = 4096;
}
void LoggerUserStat::add_stat(
shared_ptr<Job> job, std::string behavior_name, long time_delayed){
BehaviorStat to_add = BehaviorStat(job, behavior_name, time_delayed);
const shared_ptr<Job> & job, std::string behavior_name, const long time_delayed){
//make a copy of the job info because it can change
Job copy_job = *(job);
shared_ptr<Job> copy_job_ptr = std::make_shared<Job>(copy_job);
BehaviorStat to_add = BehaviorStat(copy_job_ptr, std::move(behavior_name), time_delayed);
behaviors.push_back(to_add);
if (behaviors.size() >= write_threshold){
log_stat();
......@@ -69,8 +74,7 @@ void LoggerUserStat::log_stat(){
}
/* We write the content in the vector to the disk and then free the vector */
for (std::vector<BehaviorStat>::size_type i = 0; i < behaviors.size(); i++){
BehaviorStat read_behavior = behaviors[i];
for (auto read_behavior : behaviors){
file << read_behavior.format();
}
behaviors.clear();
......
......@@ -22,8 +22,8 @@ struct BehaviorStat {
class LoggerUserStat {
public:
LoggerUserStat(std::string log_folder);
void add_stat(shared_ptr <Job> job,
std::string behavior_name, long time_delayed);
void add_stat(const shared_ptr <Job> & job,
std::string behavior_name, long time_delayed);
void log_stat();
protected:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment