Browse Source

Little delay in priority to cpu work.

master
Stanislav Usenkov 9 years ago
parent
commit
f5e7b2236a
  1. 10
      src/main/java/ru/simsonic/rscPermissions/API/Settings.java
  2. 10
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java
  3. 2
      src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitRegionProviders.java
  4. 12
      src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java
  5. 25
      src/main/java/ru/simsonic/rscPermissions/Bukkit/RegionUpdateObserver.java

10
src/main/java/ru/simsonic/rscPermissions/API/Settings.java

@ -30,9 +30,13 @@ public interface Settings
+ "([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"
+ "(?:/([0-9]|[1-2][0-9]|3[0-2]))$";
public static final String DEFAULT_MMODE_MSG_PING = "{_LR}Maintenance mode";
public static final String DEFAULT_MMODE_MSG_KICK = "{_LR}Sorry! Server is going into maintenance mode.";
public static final String DEFAULT_MMODE_MSG_JOIN = "{_LR}You are not allowed to enter when maintenance is on.";
public static final long REGION_UPDATE_SLEEP_INTERVAL = 250;
public static final long REGION_UPDATE_GRANULARITY_MIN = 20;
public static final long REGION_UPDATE_GRANULARITY_MAX = 10000;
public static final String DEFAULT_MMODE_MSG_PING = "{_LR}Maintenance mode";
public static final String DEFAULT_MMODE_MSG_KICK = "{_LR}Sorry! Server is going into maintenance mode.";
public static final String DEFAULT_MMODE_MSG_JOIN = "{_LR}You are not allowed to enter when maintenance is on.";
public void onLoad();
public void onEnable();

10
src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitPermissionManager.java

@ -31,7 +31,7 @@ public class BukkitPermissionManager extends RestartableThread
private final Map<String, ResolutionResult> resolutions = new ConcurrentHashMap<>();
private final Map<Player, PermissionAttachment> attachments = new HashMap<>();
private final Map<Player, Map<String, Boolean>> persistent = new HashMap<>();
private final Map<Player, Map<String, Boolean>> temporary = new HashMap<>();
// private final Map<Player, Map<String, Boolean>> temporary = new HashMap<>();
private final Set<CommandSender> debug = new HashSet<>();
public void recalculateOnlinePlayers()
{
@ -78,7 +78,7 @@ public class BukkitPermissionManager extends RestartableThread
updateQueue.remove(player);
attachments.remove(player);
persistent.remove(player);
temporary.remove(player);
// temporary.remove(player);
synchronized(debug)
{
debug.remove(player);
@ -111,14 +111,16 @@ public class BukkitPermissionManager extends RestartableThread
if(pp != null && !pp.isEmpty())
for(Map.Entry<String, Boolean> row : pp.entrySet())
attachment.setPermission(row.getKey(), row.getValue());
/*
final Map<String, Boolean> tp = temporary.get(player);
if(tp != null && !tp.isEmpty())
for(Map.Entry<String, Boolean> row : tp.entrySet())
attachment.setPermission(row.getKey(), row.getValue());
// Give/Reset Server Operator status
*/
// Set/reset Server Operator status
final Boolean asterisk = attachment.getPermissions().get("*");
if(rscp.settings.isAsteriskOP())
player.setOp((asterisk != null) ? asterisk : false);
player.setOp(asterisk != null ? asterisk : false);
// Show debugging information
if(isDebugging(player))
player.sendMessage(GenericChatCodes.processStringStatic(Settings.CHAT_PREFIX

2
src/main/java/ru/simsonic/rscPermissions/Bukkit/BukkitRegionProviders.java

@ -124,7 +124,7 @@ public final class BukkitRegionProviders
public synchronized Set<String> getPlayerRegions(Player player)
{
Set<String> result = regionsByPlayer.get(player);
return (result != null) ? result : Collections.<String>emptySet();
return result != null ? result : Collections.<String>emptySet();
}
public synchronized void removePlayer(Player player)
{

12
src/main/java/ru/simsonic/rscPermissions/Bukkit/Commands/BukkitCommands.java

@ -15,12 +15,12 @@ import ru.simsonic.rscPermissions.Engine.Phrases;
public class BukkitCommands
{
private final BukkitPluginMain rscp;
private final CommandEntity cmdEntity;
private final CommandLock cmdLock;
private final CommandFetch cmdFetch;
private final CommandDebug cmdDebug;
private final CommandReload cmdReload;
private final CommandUpdate cmdUpdate;
private final CommandEntity cmdEntity;
private final CommandLock cmdLock;
private final CommandFetch cmdFetch;
private final CommandDebug cmdDebug;
private final CommandReload cmdReload;
private final CommandUpdate cmdUpdate;
public final BukkitDatabaseFetcher threadFetchDatabaseContents;
public BukkitCommands(final BukkitPluginMain plugin)
{

25
src/main/java/ru/simsonic/rscPermissions/Bukkit/RegionUpdateObserver.java

@ -1,14 +1,14 @@
package ru.simsonic.rscPermissions.Bukkit;
import java.util.HashSet;
import org.bukkit.entity.Player;
import ru.simsonic.rscCommonsLibrary.RestartableThread;
import ru.simsonic.rscMinecraftLibrary.Bukkit.MovingPlayersCatcher;
import ru.simsonic.rscPermissions.API.Settings;
import ru.simsonic.rscPermissions.BukkitPluginMain;
public class RegionUpdateObserver extends RestartableThread
{
private static final long granularityMin = 20;
private static final long granularityMax = 10000;
private final BukkitPluginMain rscp;
private final MovingPlayersCatcher movedPlayers = new MovingPlayersCatcher();
public RegionUpdateObserver(BukkitPluginMain rscp)
@ -27,14 +27,21 @@ public class RegionUpdateObserver extends RestartableThread
Thread.currentThread().setName("rscp:" + this.getClass().getSimpleName());
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
long granularity = rscp.settings.getRegionFinderGranularity();
if(granularity < granularityMin)
granularity = granularityMin;
if(granularity > granularityMax)
granularity = granularityMax;
if(granularity < Settings.REGION_UPDATE_GRANULARITY_MIN)
granularity = Settings.REGION_UPDATE_GRANULARITY_MIN;
if(granularity > Settings.REGION_UPDATE_GRANULARITY_MAX)
granularity = Settings.REGION_UPDATE_GRANULARITY_MAX;
for(; !Thread.interrupted(); Thread.sleep(granularity))
for(Player player : movedPlayers.getMovedPlayersAsync())
if(rscp.regionListProvider.isRegionListChanged(player))
rscp.permissionManager.recalculatePlayer(player);
{
final HashSet<Player> players = movedPlayers.getMovedPlayersAsync();
if(players.isEmpty())
Thread.sleep(Settings.REGION_UPDATE_SLEEP_INTERVAL);
else
for(Player player : players)
if(rscp.regionListProvider.isRegionListChanged(player))
rscp.permissionManager.recalculatePlayer(player);
}
} catch(InterruptedException ex) {
}
}

Loading…
Cancel
Save