Random possibly required security

This commit is contained in:
Olof Larsson 2015-03-13 12:58:58 +01:00
parent 9649998352
commit 86ddbdcf15
4 changed files with 29 additions and 5 deletions

View File

@ -49,6 +49,7 @@ import com.massivecraft.massivecore.teleport.EngineScheduledTeleport;
import com.massivecraft.massivecore.util.IdUtil; import com.massivecraft.massivecore.util.IdUtil;
import com.massivecraft.massivecore.util.MUtil; import com.massivecraft.massivecore.util.MUtil;
import com.massivecraft.massivecore.util.PlayerUtil; import com.massivecraft.massivecore.util.PlayerUtil;
import com.massivecraft.massivecore.util.TimeUnit;
import com.massivecraft.massivecore.util.Txt; import com.massivecraft.massivecore.util.Txt;
import com.massivecraft.massivecore.xlib.gson.Gson; import com.massivecraft.massivecore.xlib.gson.Gson;
import com.massivecraft.massivecore.xlib.gson.GsonBuilder; import com.massivecraft.massivecore.xlib.gson.GsonBuilder;
@ -158,6 +159,9 @@ public class MassiveCore extends MassivePlugin
if ( ! preEnable()) return; if ( ! preEnable()) return;
// TODO: This seems to fix most race conditions within the class asynchronous class loader.
System.out.println("TimeUnit.MILLIS_PER_MINUTE: " + TimeUnit.MILLIS_PER_MINUTE);
// Load Server Config // Load Server Config
ConfServer.get().load(); ConfServer.get().load();

View File

@ -440,7 +440,7 @@ public class Coll<E> implements CollInterface<E>
protected Map<String, Modification> identifiedModifications; protected Map<String, Modification> identifiedModifications;
protected void removeIdentifiedModification(Object oid) protected synchronized void removeIdentifiedModification(Object oid)
{ {
if (oid == null) throw new NullPointerException("oid"); if (oid == null) throw new NullPointerException("oid");
String id = this.fixId(oid); String id = this.fixId(oid);
@ -839,12 +839,16 @@ public class Coll<E> implements CollInterface<E>
} }
@Override @Override
public void syncIdentified() public void syncIdentified(boolean safe)
{ {
for (Entry<String, Modification> entry : this.identifiedModifications.entrySet()) for (Entry<String, Modification> entry : this.identifiedModifications.entrySet())
{ {
String id = entry.getKey(); String id = entry.getKey();
Modification modification = entry.getValue(); Modification modification = entry.getValue();
if (safe)
{
modification = null;
}
this.syncId(id, modification); this.syncId(id, modification);
} }
} }
@ -853,7 +857,7 @@ public class Coll<E> implements CollInterface<E>
public void syncAll() public void syncAll()
{ {
this.identifyModifications(); this.identifyModifications();
this.syncIdentified(); this.syncIdentified(false);
} }
@Override @Override
@ -879,7 +883,7 @@ public class Coll<E> implements CollInterface<E>
@Override @Override
public void onTick() public void onTick()
{ {
this.syncIdentified(); this.syncIdentified(true);
} }
// -------------------------------------------- // // -------------------------------------------- //

View File

@ -140,7 +140,7 @@ public interface CollInterface<E>
public Modification syncId(Object oid); public Modification syncId(Object oid);
public Modification syncId(Object oid, Modification modificationState); public Modification syncId(Object oid, Modification modificationState);
public Modification syncId(Object oid, Modification modificationState, Entry<JsonElement, Long> remoteEntry); public Modification syncId(Object oid, Modification modificationState, Entry<JsonElement, Long> remoteEntry);
public void syncIdentified(); public void syncIdentified(boolean safe);
public void syncAll(); public void syncAll();
public void identifyModifications(); public void identifyModifications();
public void initLoadAllFromRemote(); public void initLoadAllFromRemote();

View File

@ -373,6 +373,22 @@ public class MUtil
list.addAll(repeat(object, length - list.size())); list.addAll(repeat(object, length - list.size()));
} }
// -------------------------------------------- //
// MAP OPERATIONS
// -------------------------------------------- //
public static void keepLeft(Map<?, ?> map, int maxSize)
{
int i = 0;
Iterator<?> iter = map.entrySet().iterator();
while (iter.hasNext())
{
iter.next();
i++;
if (i > maxSize) iter.remove();
}
}
// -------------------------------------------- // // -------------------------------------------- //
// ITERABLE MATH // ITERABLE MATH
// -------------------------------------------- // // -------------------------------------------- //