URLog.java 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  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. }
  25. else {
  26. var ret=new LogHolder[length];
  27. System.arraycopy(list, from, ret,0,length);
  28. return new LogEntries(ret, pos);
  29. }
  30. }
  31. }
  32. }