StatsTimer Class Reference

StatsTimer publishes stats snapshots from StatsSources to a StatsTarget. More...

#include <StatsTimer.h>

Inheritance diagram for StatsTimer:

TimerThreadClient List of all members.

Public Member Functions

 StatsTimer (uint intervalInMillis)
 Creates a new StatsTimer without any initial target.
 StatsTimer (StatsTarget &target, uint intervalInMillis)
 Creates a new StatsTimer with an initial target.
virtual ~StatsTimer ()
void setTarget (StatsTarget &target)
 Sets the target for events.
void addSource (SharedStatsSource pSource)
 Adds a source to be published.
void start ()
 Starts publication.
void stop ()
 Stops publication and forgets all sources.

Private Member Functions

virtual uint getTimerIntervalMillis ()
 Calculates the interval which should elapse before the next call to onTimerInterval.
virtual void onThreadStart ()
 Called in new thread context before thread's body runs.
virtual void onTimerInterval ()
 Receives notification from TimerThread that interval has elapsed.
virtual void onThreadEnd ()
 Called in thread context after thread's body runs.
virtual FennelExcncloneExcn (std::exception &ex)
 Clones an exception so that it can be rethrown in a different thread context.

Private Attributes

StatsTargetpTarget
std::vector< SharedStatsSourcesources
TimerThread timerThread
uint intervalInMillis

Detailed Description

StatsTimer publishes stats snapshots from StatsSources to a StatsTarget.

Definition at line 38 of file StatsTimer.h.


Constructor & Destructor Documentation

StatsTimer::StatsTimer ( uint  intervalInMillis  )  [explicit]

Creates a new StatsTimer without any initial target.

Parameters:
intervalInMillis interval between publications

Definition at line 40 of file StatsTimer.cpp.

References intervalInMillis, and pTarget.

00042     : timerThread(*this)
00043 {
00044     pTarget = NULL;
00045     intervalInMillis = intervalInMillisInit;
00046 }

StatsTimer::StatsTimer ( StatsTarget target,
uint  intervalInMillis 
) [explicit]

Creates a new StatsTimer with an initial target.

Parameters:
target target to receive events
intervalInMillis interval between publications

Definition at line 31 of file StatsTimer.cpp.

References intervalInMillis, and pTarget.

00034     : timerThread(*this)
00035 {
00036     pTarget = &target;
00037     intervalInMillis = intervalInMillisInit;
00038 }

StatsTimer::~StatsTimer (  )  [virtual]

Definition at line 48 of file StatsTimer.cpp.

00049 {
00050 }


Member Function Documentation

uint StatsTimer::getTimerIntervalMillis (  )  [private, virtual]

Calculates the interval which should elapse before the next call to onTimerInterval.

This can be different each time. A return value of 0 will cause the TimerThread to cease calling back.

Implements TimerThreadClient.

Definition at line 80 of file StatsTimer.cpp.

References intervalInMillis.

00081 {
00082     return intervalInMillis;
00083 }

void StatsTimer::onThreadStart (  )  [private, virtual]

Called in new thread context before thread's body runs.

Reimplemented from ThreadTracker.

Definition at line 85 of file StatsTimer.cpp.

References StatsTarget::onThreadStart(), and pTarget.

00086 {
00087     if (pTarget) {
00088         pTarget->onThreadStart();
00089     }
00090 }

void StatsTimer::onTimerInterval (  )  [private, virtual]

Receives notification from TimerThread that interval has elapsed.

Implements TimerThreadClient.

Definition at line 99 of file StatsTimer.cpp.

References StatsTarget::beginSnapshot(), StatsTarget::endSnapshot(), pTarget, and sources.

00100 {
00101     if (!pTarget) {
00102         return;
00103     }
00104     pTarget->beginSnapshot();
00105     for (uint i = 0; i < sources.size(); ++i) {
00106         sources[i]->writeStats(*pTarget);
00107     }
00108     pTarget->endSnapshot();
00109 }

void StatsTimer::onThreadEnd (  )  [private, virtual]

Called in thread context after thread's body runs.

Reimplemented from ThreadTracker.

Definition at line 92 of file StatsTimer.cpp.

References StatsTarget::onThreadEnd(), and pTarget.

00093 {
00094     if (pTarget) {
00095         pTarget->onThreadEnd();
00096     }
00097 }

void StatsTimer::setTarget ( StatsTarget target  ) 

Sets the target for events.

Parameters:
target target to receive events

Definition at line 52 of file StatsTimer.cpp.

References pTarget.

00053 {
00054     pTarget = &target;
00055 }

void StatsTimer::addSource ( SharedStatsSource  pSource  ) 

Adds a source to be published.

Should not be used after start().

Parameters:
pSource source from which stats will be collected

Definition at line 57 of file StatsTimer.cpp.

References sources.

Referenced by CacheTestBase::openStorage(), BTreeTxnTest::testCaseSetUp(), and BTreeTxnTest::testTxns().

00058 {
00059     sources.push_back(pSource);
00060 }

void StatsTimer::start (  ) 

Starts publication.

Target and sources must all remain valid until stop().

Definition at line 62 of file StatsTimer.cpp.

References Thread::start(), and timerThread.

Referenced by CacheTestBase::openStorage(), BTreeTxnTest::testCaseSetUp(), and BTreeTxnTest::testTxns().

00063 {
00064     timerThread.start();
00065 }

void StatsTimer::stop (  ) 

Stops publication and forgets all sources.

Definition at line 67 of file StatsTimer.cpp.

References StatsTarget::beginSnapshot(), StatsTarget::endSnapshot(), pTarget, sources, TimerThread::stop(), and timerThread.

Referenced by CacheTestBase::closeStorage(), BTreeTxnTest::testCaseTearDown(), BTreeTxnTest::testTxns(), and CmdInterpreter::DbHandle::~DbHandle().

00068 {
00069     timerThread.stop();
00070 
00071     // clear target counters
00072     if (pTarget) {
00073         pTarget->beginSnapshot();
00074         pTarget->endSnapshot();
00075     }
00076 
00077     sources.clear();
00078 }

FennelExcn * ThreadTracker::cloneExcn ( std::exception &  ex  )  [virtual, inherited]

Clones an exception so that it can be rethrown in a different thread context.

Parameters:
ex the excn to be cloned
Returns:
cloned excn

Reimplemented in JavaThreadTracker.

Definition at line 43 of file ThreadTracker.cpp.

Referenced by JavaThreadTracker::cloneExcn(), and ParallelExecStreamScheduler::executeTask().

00044 {
00045     return new FennelExcn(ex.what());
00046 }


Member Data Documentation

StatsTarget* StatsTimer::pTarget [private]

Definition at line 40 of file StatsTimer.h.

Referenced by onThreadEnd(), onThreadStart(), onTimerInterval(), setTarget(), StatsTimer(), and stop().

std::vector<SharedStatsSource> StatsTimer::sources [private]

Definition at line 41 of file StatsTimer.h.

Referenced by addSource(), onTimerInterval(), and stop().

TimerThread StatsTimer::timerThread [private]

Definition at line 42 of file StatsTimer.h.

Referenced by start(), and stop().

uint StatsTimer::intervalInMillis [private]

Definition at line 43 of file StatsTimer.h.

Referenced by getTimerIntervalMillis(), and StatsTimer().


The documentation for this class was generated from the following files:
Generated on Mon Jun 22 04:00:47 2009 for Fennel by  doxygen 1.5.1