/* Web Polygraph http://www.web-polygraph.org/ * (C) 2003-2006 The Measurement Factory * Licensed under the Apache License, Version 2.0 */ #ifndef POLYGRAPH__BASE_STATINTVLREC_H #define POLYGRAPH__BASE_STATINTVLREC_H #include "base/LogObj.h" #include "base/IcpStat.h" #include "base/SslIntvlStat.h" // holds basic statistics for a given interval class StatIntvlRec: public LogObj { public: StatIntvlRec(); void restart(); virtual OLog &store(OLog &log) const; virtual ILog &load(ILog &); bool sane() const; double reqRate() const; // req/sec double repRate() const; // rep/sec double reqBwidth() const; // bytes/sec double repBwidth() const; // bytes/sec AggrStat repTime() const; // hit + miss AggrStat repSize() const; // hit + miss int xactCnt() const { return theXactCnt + theXactErrCnt; } BigSize totFillSize() const; int totFillCount() const; double errRatio() const; double errPercent() const; TmSzStat reps() const; // all successful xactions void keepLevels(const StatIntvlRec &prevIntvl); void concat(const StatIntvlRec &r); // sequential intervals void merge(const StatIntvlRec &r); // concurrent intervals ostream &print(ostream &os, const String &pfx) const; void linePrintAll(ostream &os, bool includeLevels) const; void linePrintSsl(ostream &os, bool includeLevels) const; protected: void join(const StatIntvlRec &r); public: /* read only, except for kids */ LevelStat thePopulusLvl; // number of agents alive /* HTTP */ LevelStat theWaitLvl; // resources waiting requests LevelStat theXactLvl; // active xactions LevelStat theOpenLvl; // open connections LevelStat theEstbLvl; // estanlished connections AggrStat theConnLifeTm; // to get mean life time AggrStat theConnUseCnt; // xactions per connection AggrStat theConnPipelineDepth; // max pipeline depth per piped conn /* these are only for basic xactions */ HRStat theIdealHR; // offered HR HRStat theRealHR; // measured HR HRStat theChbR; // cachablity ratio TmSzStat theFill; // cachable misses /* special xactions */ TmSzStat theRediredReq; // transactions due to redir replies TmSzStat theRepToRedir; // transactions resulted in redir replies TmSzStat theIms; // IMS transactions TmSzStat theReload; // reload transactions TmSzStat theHead; // transactions using HEAD request method TmSzStat thePost; // transactions using POST TmSzStat thePut; // transactions using PUT TmSzStat theAbort; // PGL-aborted transactions TmSzStat thePage; // page "download" time and cumulative size int theXactCnt; // successful xactions int theXactErrCnt; // xaction errors int theXactRetrCnt; // xaction retries /* other protocols */ IcpStat theIcpStat; // Internet Cache Protocol SslIntvlStat theSslStat; // Secure Sockets Layer Time theDuration; // actual intvl length, computed for us }; struct EmbedStats { int tagSeen; int tagMatched; int attrSeen; int attrMatched; int urlSeen; int foreignUrlRequested; int foreignUrlReceived; EmbedStats() { tagSeen = tagMatched = attrSeen = attrMatched = urlSeen = foreignUrlRequested = foreignUrlReceived = 0; } }; extern EmbedStats TheEmbedStats; #endif