package at.acdp.urweb.sclient; import at.acdp.urweb.sclient.data.IJsonObject; import at.acdp.urweb.sclient.data.LogHolder; public class URLog { private final static int LENGTH = 100; private static LogHolder[] list = new LogHolder[LENGTH]; private static int pos = 0; public static void add(IJsonObject jo) { synchronized (list) { String type = jo.getClass().getSimpleName(); list[++pos % LENGTH] = new LogHolder(type, jo); } } public static LogEntries get(int from) { from %= LENGTH; int to = pos % LENGTH; synchronized (list) { int length = to - from; if (from > to) { var ret = new LogHolder[LENGTH - from + to]; System.arraycopy(list, from, ret, 0, LENGTH - from); System.arraycopy(list, 0, ret, LENGTH - from, to); return new LogEntries(ret, pos); } else { var ret = new LogHolder[length]; System.arraycopy(list, from, ret, 0, length); return new LogEntries(ret, pos); } } } }