Class PortManagerImpl

java.lang.Object
org.refcodes.web.PortManagerImpl
All Implemented Interfaces:
PortManager
Direct Known Subclasses:
PortManagerSingleton

public class PortManagerImpl
extends Object
implements PortManager
Implementation of the PortManager interface. For system wide management of ports, see PortManagerSingleton.
  • Constructor Details

    • PortManagerImpl

      public PortManagerImpl()
  • Method Details

    • isPortBound

      public boolean isPortBound​(int aPortNumber)
      Determines whether the given Port-Number is already in use. This is achieved by testing whether another resource has reserved the port manually (via PortManager.bindPort(int), PortManager.bindAnyPort() or PortManager.bindNextPort(int)) or if the port is already in use and cannot be bound, e.g. there is already some Server-Socket technically bound to the given port.
      Specified by:
      isPortBound in interface PortManager
      Parameters:
      aPortNumber - The port number to be tested if it is already bound.
      Returns:
      True in case the port is being bound already, else false if it still available.
    • bindAnyPort

      public Integer bindAnyPort() throws PortNotFoundRuntimeException
      Any free port in the range as defined by PortRange.DYNAMIC_PORTS is bound (reserved) and returned. A port is aught to be free when PortManager.isPortBound(int) returns false.
      Specified by:
      bindAnyPort in interface PortManager
      Returns:
      The free port being reserved. The Integer instance is the handle for unbinding a port via PortManager.unbindPort(Integer).
      Throws:
      PortNotFoundRuntimeException - thrown in case no port can be determined.
    • bindPort

      public Integer bindPort​(int aPortNumber) throws PortAlreadyBoundException
      The port is bound and returned. A port is aught to be free when PortManager.isPortBound(int) returns false.
      Specified by:
      bindPort in interface PortManager
      Parameters:
      aPortNumber - The Port-Number which to bind (reserve).
      Returns:
      The port being reserved. The Integerinstance is the handle for unbinding a port via PortManager.unbindPort(Integer).
      Throws:
      PortAlreadyBoundException - the port already bound exception
    • unbindPort

      public boolean unbindPort​(Integer aPortNumber) throws IllegalArgumentException
      Unbinds a port for the given Port-Number using the Integer as handle for unbinding. This means that another Integer instance with another identity fails to unbind the given port.
      Specified by:
      unbindPort in interface PortManager
      Parameters:
      aPortNumber - The Port-Number for the port to be unbound.
      Returns:
      True in case the port has been unbound or false if the port was not bound at all.
      Throws:
      IllegalArgumentException - thrown in case the ginven Integer identity is not allowed to unbind the given port.
    • bindNextPort

      public Integer bindNextPort​(int aBeginPortIndex, int aEndPortIndex) throws PortNotFoundRuntimeException
      The first free port in the range of the given begin Port-Number index and the given end Port-Number index is bound (reserved) and returned. A port is aught to be free when PortManager.isPortBound(int) returns false.
      Specified by:
      bindNextPort in interface PortManager
      Parameters:
      aBeginPortIndex - The begin index (included) of the Port-Number which to bind (reserve).
      aEndPortIndex - The end index (included) of the Port-Number which to bind (reserve).
      Returns:
      The next free port being reserved. The Integer instance is the handle for unbinding a port via PortManager.unbindPort(Integer).
      Throws:
      PortNotFoundRuntimeException - thrown in case no port can be determined.
    • isPortAvaialble

      public boolean isPortAvaialble​(int aPortNumber)
      Tests whether there is already some Server-Socket technically bound to the given port. This method does not test if the port is reserved, it just tests if a Server-Socket could still technically bind to this port.
      Specified by:
      isPortAvaialble in interface PortManager
      Parameters:
      aPortNumber - The Port-Number to be technically tested if a Server-Socket could still bind to it.
      Returns:
      True if the port could technically be bound to, else false if some Server-Socket is already bound to this port (or the Security-Manager prevents binding to the port).