#ifndef BON_TIME_H
#define BON_TIME_H
#include "bonnie.h"
#include "duration.h"
#include "rand.h"
struct report_s
{
double CPU;
double StartTime;
double EndTime;
double Latency;
};
struct delta_s
{
double CPU;
double Elapsed;
double FirstStart;
double LastStop;
double Latency;
};
class BonTimer
{
public:
enum RepType { csv, txt };
BonTimer();
void start();
void stop_and_record(tests_t test);
void add_delta_report(report_s &rep, tests_t test);
int DoReportIO(int file_size, int char_file_size
, int io_chunk_size, FILE *fp);
int DoReportFile(int directory_size
, int max_size, int min_size, int num_directories
, int file_chunk_size, FILE *fp);
void SetType(RepType type) { m_type = type; }
double cpu_so_far();
double time_so_far();
void PrintHeader(FILE *fp);
void Initialize();
static double get_cur_time();
static double get_cpu_use();
void add_latency(tests_t test, double t);
void setMachineName(CPCCHAR name) { m_name = name; }
void setConcurrency(int con) { m_concurrency = con; }
Rand random_source;
private:
int print_cpu_stat(tests_t test);
int print_stat(tests_t test, int test_size);
int print_latency(tests_t test);
delta_s m_delta[TestCount];
RepType m_type;
FILE *m_fp;
Duration m_dur;
#ifndef WIN32
CPU_Duration m_cpu_dur;
#endif
PCCHAR m_name;
int m_concurrency;
BonTimer(const BonTimer&);
BonTimer &operator=(const BonTimer&);
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1