/* Web Polygraph http://www.web-polygraph.org/
* (C) 2003-2006 The Measurement Factory
* Licensed under the Apache License, Version 2.0 */
#ifndef POLYGRAPH__RUNTIME_RPTMSTAT_H
#define POLYGRAPH__RUNTIME_RPTMSTAT_H
#include "xstd/AlarmClock.h"
#include "base/AggrStat.h"
#include "runtime/BcastRcver.h"
class RptmstatSym;
class StatPhase;
// response time "thermostat"
class Rptmstat: public AlarmUser, public BcastRcver {
public:
static bool IsEnabled; // XXX: to disable on server-side
public:
Rptmstat();
void configure(const RptmstatSym &cfg);
void start(StatPhase *aPhase);
void stop(StatPhase *aPhase);
virtual void wakeUp(const Alarm &alarm);
virtual void noteXactEvent(BcastChannel *, const Xaction *);
protected:
void changeLoad(double delta);
void nextSample();
void checkpoint();
protected:
Time theSampleDur; // sampling interval
Time theRptmMin; // rptm goals
Time theRptmMax;
double theLoadDelta; // reactivity
StatPhase *thePhase;
AggrStat theRptm; // current measurements
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1