// Copyright (C) by Josh Blum. See LICENSE.txt for licensing information. #ifndef INCLUDED_LIBGRAS_IMPL_STATS_HPP #define INCLUDED_LIBGRAS_IMPL_STATS_HPP #include #include namespace gras { struct BlockStats { BlockStats(void) { init_time = time_now(); start_time = 0; stop_time = 0; work_count = 0; time_last_work = 0; total_time_prep = 0; total_time_work = 0; total_time_post = 0; total_time_input = 0; total_time_output = 0; } time_ticks_t init_time; time_ticks_t start_time; time_ticks_t stop_time; //overall tracking of ports std::vector items_consumed; std::vector tags_consumed; std::vector msgs_consumed; std::vector items_produced; std::vector tags_produced; std::vector msgs_produced; //port starvation tracking std::vector inputs_idle; std::vector outputs_idle; //instantaneous port status std::vector items_enqueued; std::vector msgs_enqueued; std::vector tags_enqueued; item_index_t work_count; time_ticks_t time_last_work; time_ticks_t total_time_prep; time_ticks_t total_time_work; time_ticks_t total_time_post; time_ticks_t total_time_input; time_ticks_t total_time_output; }; } //namespace gras #endif /*INCLUDED_LIBGRAS_IMPL_STATS_HPP*/