Package net.sf.colossus.webserver
Class PortBookKeeper
- java.lang.Object
-
- net.sf.colossus.webserver.PortBookKeeper
-
- All Implemented Interfaces:
IPortProvider
public class PortBookKeeper extends java.lang.Object implements IPortProvider
This class keeps track of which ports are currently occupied by ongoing games and which are free for new games.- Author:
- Clemens Katzer
-
-
Field Summary
Fields Modifier and Type Field Description private intgamePortsNr of ports that are actually available for game serving (so, this value == 5 means there can be 5 games)private static java.util.logging.LoggerLOGGERprivate GameInfoNOT_A_REAL_GAMEA placeholder for the bookkeping table, if it's somehow used but we don't know by what or whomprivate java.util.ArrayList<GameInfo>portInUseBookkeeping which (game) ports are currently in useprivate intportRangeFromprivate inttotalPortstotal nr of ports we are allowed to use according to options file; but only every 2nd is used as a game port
-
Constructor Summary
Constructors Constructor Description PortBookKeeper(int portRangeStart, int availablePorts)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private java.lang.StringbuildPortTableReport()intcountFreePorts()private voidensureSomeFreePortsRemain()intgetFreePort(GameInfo gi)private GameInfogetGameAtPort(int portNr)java.lang.StringgetStatus()private intindexForRealPort(int portNumber)private booleanisPortInUse(int portNr)private voidmarkPortFree(int portNr)private voidmarkPortUsed(int portNr, GameInfo gi)private intrealPortForIndex(int portIndex)private voidreCheckPorts()voidreleasePort(GameInfo gi)private booleantestThatPortReallyFree(int port)Check that it's really free, as expected, log a warning if notprivate booleantestWhetherPortFree(int port)Just check it, whether it's free or not
-
-
-
Field Detail
-
LOGGER
private static final java.util.logging.Logger LOGGER
-
portRangeFrom
private final int portRangeFrom
-
totalPorts
private final int totalPorts
total nr of ports we are allowed to use according to options file; but only every 2nd is used as a game port
-
gamePorts
private final int gamePorts
Nr of ports that are actually available for game serving (so, this value == 5 means there can be 5 games)
-
portInUse
private final java.util.ArrayList<GameInfo> portInUse
Bookkeeping which (game) ports are currently in use
-
NOT_A_REAL_GAME
private final GameInfo NOT_A_REAL_GAME
A placeholder for the bookkeping table, if it's somehow used but we don't know by what or whom
-
-
Method Detail
-
realPortForIndex
private int realPortForIndex(int portIndex)
-
indexForRealPort
private int indexForRealPort(int portNumber)
-
markPortUsed
private void markPortUsed(int portNr, GameInfo gi)
-
markPortFree
private void markPortFree(int portNr)
-
getGameAtPort
private GameInfo getGameAtPort(int portNr)
-
isPortInUse
private boolean isPortInUse(int portNr)
-
getFreePort
public int getFreePort(GameInfo gi)
- Specified by:
getFreePortin interfaceIPortProvider
-
countFreePorts
public int countFreePorts()
-
testThatPortReallyFree
private boolean testThatPortReallyFree(int port)
Check that it's really free, as expected, log a warning if not
-
testWhetherPortFree
private boolean testWhetherPortFree(int port)
Just check it, whether it's free or not
-
ensureSomeFreePortsRemain
private void ensureSomeFreePortsRemain()
-
reCheckPorts
private void reCheckPorts()
-
releasePort
public void releasePort(GameInfo gi)
-
buildPortTableReport
private java.lang.String buildPortTableReport()
-
getStatus
public java.lang.String getStatus()
-
-