Browse Source

Little delay in priority to cpu work.

master
Stanislav Usenkov 9 years ago
parent
commit
f5e7b2236a
  1. 4
      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. 21
      src/main/java/ru/simsonic/rscPermissions/Bukkit/RegionUpdateObserver.java

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

@ -30,6 +30,10 @@ 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-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]))$"; + "(?:/([0-9]|[1-2][0-9]|3[0-2]))$";
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_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_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 String DEFAULT_MMODE_MSG_JOIN = "{_LR}You are not allowed to enter when maintenance is on.";

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

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

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

Loading…
Cancel
Save