summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--run_and_record/c++/main.cpp30
-rw-r--r--run_and_record/c++/schema.hpp3
2 files changed, 22 insertions, 11 deletions
diff --git a/run_and_record/c++/main.cpp b/run_and_record/c++/main.cpp
index f1feeb9..c52d5f5 100644
--- a/run_and_record/c++/main.cpp
+++ b/run_and_record/c++/main.cpp
@@ -246,21 +246,26 @@ saw::error_or<void> kel_main(int argc, char** argv){
return saw::make_error<saw::err::critical>("Command is empty");
}
+ argc_prog = i - cmd_pos_start;
{
- cmd_prog = cmd_args.at({0u});
- auto eov = commands.add(std::move(cmd_d));
+ argv[i] = 0;
+ auto start_time = std::chrono::steady_clock::now();
+ auto eov = run_program(argc_prog,&argv[cmd_pos_start]);
if(eov.is_error()){
return eov;
}
- cmd_d = {};
+ auto stop_time = std::chrono::steady_clock::now();
+ auto run_duration = stop_time - start_time;
+ saw::data<sch::UInt64> dat_run_dur{static_cast<uint64_t>(std::chrono::duration_cast<std::chrono::nanoseconds>(run_duration).count())};
+ cmd_d.template get<"duration">() = dat_run_dur;
}
- argc_prog = i - cmd_pos_start;
{
- argv[i] = 0;
- auto eov = run_program(argc_prog,&argv[cmd_pos_start]);
+ cmd_prog = cmd_args.at({0u});
+ auto eov = commands.add(std::move(cmd_d));
if(eov.is_error()){
return eov;
}
+ cmd_d = {};
}
cmd_pos_start = i + 1;
}else{
@@ -272,15 +277,20 @@ saw::error_or<void> kel_main(int argc, char** argv){
return saw::make_error<saw::err::critical>("Last command is empty");
}
{
- cmd_prog = cmd_args.at({0u});
- auto eov = commands.add(std::move(cmd_d));
+ argc_prog = argc - cmd_pos_start;
+ auto start_time = std::chrono::steady_clock::now();
+ auto eov = run_program(argc_prog,&argv[cmd_pos_start]);
if(eov.is_error()){
return eov;
}
+ auto stop_time = std::chrono::steady_clock::now();
+ auto run_duration = stop_time - start_time;
+ saw::data<sch::UInt64> dat_run_dur{static_cast<uint64_t>(std::chrono::duration_cast<std::chrono::nanoseconds>(run_duration).count())};
+ cmd_d.template get<"duration">() = dat_run_dur;
}
{
- argc_prog = argc - cmd_pos_start;
- auto eov = run_program(argc_prog,&argv[cmd_pos_start]);
+ cmd_prog = cmd_args.at({0u});
+ auto eov = commands.add(std::move(cmd_d));
if(eov.is_error()){
return eov;
}
diff --git a/run_and_record/c++/schema.hpp b/run_and_record/c++/schema.hpp
index 87405ef..8994e97 100644
--- a/run_and_record/c++/schema.hpp
+++ b/run_and_record/c++/schema.hpp
@@ -27,7 +27,8 @@ using RarEnv = Array<String>;
using RarCommand = Struct<
Member<String, "program">,
- Member<Array<String>, "arguments">
+ Member<Array<String>, "arguments">,
+ Member<UInt64, "duration">
>;
using RarFileData = Struct<