Package net.sf.colossus.webserver
Class PortBookKeeper
java.lang.Object
net.sf.colossus.webserver.PortBookKeeper
- All Implemented Interfaces:
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
FieldsModifier and TypeFieldDescriptionprivate final int
Nr of ports that are actually available for game serving (so, this value == 5 means there can be 5 games)private static final Logger
private final GameInfo
A placeholder for the bookkeping table, if it's somehow used but we don't know by what or whomBookkeeping which (game) ports are currently in useprivate final int
private final int
total 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 -
Method Summary
Modifier and TypeMethodDescriptionprivate String
int
private void
int
getFreePort
(GameInfo gi) private GameInfo
getGameAtPort
(int portNr) private int
indexForRealPort
(int portNumber) private boolean
isPortInUse
(int portNr) private void
markPortFree
(int portNr) private void
markPortUsed
(int portNr, GameInfo gi) private int
realPortForIndex
(int portIndex) private void
void
releasePort
(GameInfo gi) private boolean
testThatPortReallyFree
(int port) Check that it's really free, as expected, log a warning if notprivate boolean
testWhetherPortFree
(int port) Just check it, whether it's free or not
-
Field Details
-
LOGGER
-
portRangeFrom
private final int portRangeFrom -
totalPorts
private final int totalPortstotal 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 gamePortsNr of ports that are actually available for game serving (so, this value == 5 means there can be 5 games) -
portInUse
Bookkeeping which (game) ports are currently in use -
NOT_A_REAL_GAME
A placeholder for the bookkeping table, if it's somehow used but we don't know by what or whom
-
-
Constructor Details
-
PortBookKeeper
public PortBookKeeper(int portRangeStart, int availablePorts)
-
-
Method Details
-
realPortForIndex
private int realPortForIndex(int portIndex) -
indexForRealPort
private int indexForRealPort(int portNumber) -
markPortUsed
-
markPortFree
private void markPortFree(int portNr) -
getGameAtPort
-
isPortInUse
private boolean isPortInUse(int portNr) -
getFreePort
- Specified by:
getFreePort
in 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
-
buildPortTableReport
-
getStatus
-