Class PortBookKeeper

java.lang.Object
net.sf.colossus.webserver.PortBookKeeper
All Implemented Interfaces:
IPortProvider

public class PortBookKeeper extends 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 Details

    • LOGGER

      private static final 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 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
  • Constructor Details

    • PortBookKeeper

      public PortBookKeeper(int portRangeStart, int availablePorts)
  • Method Details

    • 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:
      getFreePort in interface IPortProvider
    • 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 String buildPortTableReport()
    • getStatus

      public String getStatus()