package com.bagri.support.stats.watch;
/**
* A simple single-threaded StopWatch implementation
*
* @author Denis Sukhoroslov
*
*/
public class SimpleStopWatch implements StopWatch {
private Ticker ticker;
private long start;
private long elapsed;
/**
*
* @param ticker the Ticker to measure ticks
*/
public SimpleStopWatch(Ticker ticker) {
this.ticker = ticker;
}
/**
* {@inheritDoc}
*/
@Override
public void start() {
start = ticker.getCurrentTicks();
elapsed = 0;
}
/**
* {@inheritDoc}
*/
@Override
public long stop() {
elapsed += ticker.getCurrentTicks() - start;
start = 0;
return elapsed;
}
/**
* {@inheritDoc}
*/
@Override
public long suspend() {
elapsed += ticker.getCurrentTicks() - start;
return elapsed;
}
/**
* {@inheritDoc}
*/
@Override
public void resume() {
start = ticker.getCurrentTicks();
}
}