Files
fail/tools/compute-hops/ResultCollector.hpp
Lars Rademacher 8b5098abdd tools: added compute-hops and dump-hops tools
As these tools work closely together with fail components, its
easiest, to build them in this context. As these tools don't
really matter for fail use, they might never be pushed to the
master branch.

Change-Id: I8c8bd80376d0475f08a531a995d829e85032371b
2014-01-23 18:53:11 +01:00

92 lines
1.5 KiB
C++

/*
* ResultCollector.hpp
*
* Created on: 23.08.2013
* Author: Lars Rademacher
*/
#ifndef RESULTCOLLECTOR_HPP_
#define RESULTCOLLECTOR_HPP_
#include <vector>
#include <fstream>
#include <iostream>
#include "../../src/core/util/smarthops/TraceReader.hpp"
#include "util/WallclockTimer.hpp"
using namespace fail;
typedef unsigned int trace_pos_t;
typedef std::pair<trace_event_tuple_t, trace_pos_t > result_tuple;
typedef enum {
OUTPUT_RESULT ,
OUTPUT_COSTS ,
OUTPUT_STATISTICS ,
} output_mode_e;
using fail::ProtoOStream;
#define COST_CHANGE 1
#define COST_NO_CHANGE 2
class ResultCollector {
public:
ResultCollector(std::ostream& out_stream, output_mode_e output_mode) :
m_ostream(out_stream),
m_res_count(1),
m_output_mode(output_mode),
m_mem_usage(0),
m_result_size(0),
m_checkpoint_count(1),
m_it_mean_costs(0),
m_max_costs(0),
ps(0){}
void
addResult(std::vector<result_tuple >& res, unsigned int costs);
void
addCheckpoint(unsigned int pos);
void
startTimer();
void
stopTimer();
void
setMaxMemUsage();
void
setProtoOStream(ProtoOStream* protoOStream);
// Prints buffered results on output stream
void
finish();
private:
std::ostream& m_ostream;
unsigned int m_res_count;
output_mode_e m_output_mode;
unsigned long m_mem_usage;
unsigned int m_result_size;
unsigned int m_checkpoint_count;
double m_it_mean_costs;
unsigned int m_max_costs;
fail::WallclockTimer m_timer;
fail::ProtoOStream *ps;
};
#endif /* STATISTICSCOLLECTOR_HPP_ */