Made updates in JSON format. Combined chat and tile queues into one UpdateQueue. Fixed UpdateQueue.
This commit is contained in:
parent
7c257af454
commit
3e398e9124
18 changed files with 208 additions and 239 deletions
|
|
@ -1,10 +1,7 @@
|
|||
package org.dynmap;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.ListIterator;
|
||||
import java.util.NoSuchElementException;
|
||||
import java.util.Set;
|
||||
|
||||
|
|
@ -13,16 +10,9 @@ public class StaleQueue {
|
|||
private LinkedList<MapTile> staleTilesQueue;
|
||||
private Set<MapTile> staleTiles;
|
||||
|
||||
/* this list stores the tile updates */
|
||||
public LinkedList<TileUpdate> tileUpdates = null;
|
||||
|
||||
/* remember up to this old tile updates (ms) */
|
||||
private static final int maxTileAge = 60000;
|
||||
|
||||
public StaleQueue() {
|
||||
staleTilesQueue = new LinkedList<MapTile>();
|
||||
staleTiles = new HashSet<MapTile>();
|
||||
tileUpdates = new LinkedList<TileUpdate>();
|
||||
}
|
||||
|
||||
public int size() {
|
||||
|
|
@ -57,47 +47,4 @@ public class StaleQueue {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void onTileUpdated(MapTile t) {
|
||||
long now = System.currentTimeMillis();
|
||||
long deadline = now - maxTileAge;
|
||||
synchronized (MapManager.lock) {
|
||||
ListIterator<TileUpdate> it = tileUpdates.listIterator(0);
|
||||
while (it.hasNext()) {
|
||||
TileUpdate tu = it.next();
|
||||
if (tu.at < deadline || tu.tile == t)
|
||||
it.remove();
|
||||
}
|
||||
tileUpdates.addLast(new TileUpdate(now, t));
|
||||
}
|
||||
}
|
||||
|
||||
private ArrayList<TileUpdate> tmpupdates = new ArrayList<TileUpdate>();
|
||||
|
||||
public TileUpdate[] getTileUpdates(long cutoff) {
|
||||
long now = System.currentTimeMillis();
|
||||
long deadline = now - maxTileAge;
|
||||
TileUpdate[] updates;
|
||||
synchronized (MapManager.lock) {
|
||||
tmpupdates.clear();
|
||||
Iterator<TileUpdate> it = tileUpdates.descendingIterator();
|
||||
while (it.hasNext()) {
|
||||
TileUpdate tu = it.next();
|
||||
if (tu.at >= cutoff) { // Tile is new.
|
||||
tmpupdates.add(tu);
|
||||
} else if (tu.at < deadline) { // Tile is too old, removing this
|
||||
// one (will eventually
|
||||
// decrease).
|
||||
it.remove();
|
||||
break;
|
||||
} else { // Tile is old, but not old enough for removal.
|
||||
break;
|
||||
}
|
||||
}
|
||||
updates = new TileUpdate[tmpupdates.size()];
|
||||
tmpupdates.toArray(updates);
|
||||
}
|
||||
return updates;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue