package scjlibs;
import javax.realtime.Clock;
public class Logger {
int totalLoggedEvents = 0;
static long[] logMilis = null;
static int[] logNanos = null;
static StringBuffer[] logEvent = null;
Logger() {
logMilis = new long[Constants.MAX_LOG_EVENTS];
logNanos = new int[Constants.MAX_LOG_EVENTS];
logEvent = new StringBuffer[Constants.MAX_LOG_EVENTS];
for (int i = 0; i < logEvent.length; i++) {
logEvent[i] = new StringBuffer();
}
}
public void addEvent(String message) {
if (Constants.ENABLE_LOG) {
Clock.getRealtimeClock().getTime(ImmortalEntry.clk);
logMilis[totalLoggedEvents] = ImmortalEntry.clk.getMilliseconds();
logNanos[totalLoggedEvents] = ImmortalEntry.clk.getNanoseconds();
logEvent[totalLoggedEvents].append(message);
totalLoggedEvents++;
if (totalLoggedEvents == Constants.MAX_LOG_EVENTS) {
totalLoggedEvents = 0;
}
if (ImmortalEntry.eventsLogged < Constants.MAX_LOG_EVENTS) {
ImmortalEntry.eventsLogged++;
}
}
}
public void addEvent(int message) {
if (Constants.ENABLE_LOG) {
Clock.getRealtimeClock().getTime(ImmortalEntry.clk);
logMilis[totalLoggedEvents] = ImmortalEntry.clk.getMilliseconds();
logNanos[totalLoggedEvents] = ImmortalEntry.clk.getNanoseconds();
logEvent[totalLoggedEvents].append(message);
totalLoggedEvents++;
if (totalLoggedEvents == Constants.MAX_LOG_EVENTS) {
totalLoggedEvents = 0;
}
if (ImmortalEntry.eventsLogged < Constants.MAX_LOG_EVENTS) {
ImmortalEntry.eventsLogged++;
}
}
}
/** Dumps the time content of a particular entry
*
* @param index Index of the entry to be dumped
*
*/
public void dumpEntry(int index) {
ImmortalEntry.term.writeln("[" + logMilis[index] + " : "
+ logNanos[index] + "]" + " :: " + logEvent[index]);
}
/** Dumps the time difference between two entries
*
* @param i Index of the second entry to be compared
* @param j Index of the first entry to be compared
*/
public void dumpDelta(int i, int j){
long deltaMilis = logMilis[j] - logMilis[i];
long deltaNanos = logNanos[j] - logNanos[i];
ImmortalEntry.term.writeln("["+deltaMilis+" : "+deltaNanos+"]");
}
}