URLog.java 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. package at.acdp.urweb.sclient;
  2. import at.acdp.urweb.sclient.data.IJsonObject;
  3. import at.acdp.urweb.sclient.data.LogHolder;
  4. public class URLog {
  5. private final static int LENGTH = 100;
  6. private static LogHolder[] list = new LogHolder[LENGTH];
  7. private static int pos = 0;
  8. public static void add(IJsonObject jo) {
  9. synchronized (list) {
  10. String type = jo.getClass().getSimpleName();
  11. list[++pos % LENGTH] = new LogHolder(type, jo);
  12. }
  13. }
  14. public static LogEntries get(int from) {
  15. from %= LENGTH;
  16. int to = pos % LENGTH;
  17. synchronized (list) {
  18. int length = to - from;
  19. if (from > to) {
  20. var ret = new LogHolder[LENGTH - from + to];
  21. System.arraycopy(list, from, ret, 0, LENGTH - from);
  22. System.arraycopy(list, 0, ret, LENGTH - from, to);
  23. return new LogEntries(ret, pos);
  24. } else {
  25. var ret = new LogHolder[length];
  26. System.arraycopy(list, from, ret, 0, length);
  27. return new LogEntries(ret, pos);
  28. }
  29. }
  30. }
  31. }