Class ProtocolCollection

java.lang.Object
org.firebirdsql.gds.ng.wire.ProtocolCollection
All Implemented Interfaces:
Iterable<ProtocolDescriptor>

public final class ProtocolCollection extends Object implements Iterable<ProtocolDescriptor>
Collection of protocols for a connect request.

In general, getProtocols(String) should be used with the enableProtocol connection property value.

Since:
3.0
Author:
Mark Rotteveel
  • Method Details

    • iterator

      public Iterator<ProtocolDescriptor> iterator()
      Specified by:
      iterator in interface Iterable<ProtocolDescriptor>
    • getProtocolDescriptor

      public ProtocolDescriptor getProtocolDescriptor(int protocolVersion)
      Parameters:
      protocolVersion - Version of the protocol
      Returns:
      ProtocolDescriptor for the specified version, or null if the version is not in this ProtocolCollection
    • getProtocolCount

      public int getProtocolCount()
      Returns:
      The protocol count
    • getProtocolVersions

      public List<Integer> getProtocolVersions()
      Get a list with the protocol versions in this collection.

      The returned List is created fresh on every call. Changes to the list have no effect on this object.

      Returns:
      Protocol version numbers
    • stream

      public Stream<ProtocolDescriptor> stream()
      Returns:
      stream of the protocol descriptors held by this protocol collection
      Since:
      6
    • create

      public static ProtocolCollection create(ProtocolDescriptor... descriptors)
      Creates a ProtocolCollection with the specified ProtocolDescriptors.

      If descriptors contains multiple implementations with the same value for ProtocolDescriptor.getVersion(), then the first implementation with the highest value for ProtocolDescriptor.getWeight() will be loaded into the collection.

      Parameters:
      descriptors - Vararg parameter with ProtocolDescriptors
      Returns:
      ProtocolCollection
    • getSupportedProtocols

      public static ProtocolCollection getSupportedProtocols()
      Returns the supported ProtocolCollection.

      The supported ProtocolCollection is created when this class is loaded by the classloader.

      The returned collection is a subset of getAvailableProtocols(), retaining only the supported protocol versions.

      Returns:
      supported ProtocolCollection
      Since:
      6
      See Also:
    • getAvailableProtocols

      public static ProtocolCollection getAvailableProtocols()
      Returns the available ProtocolCollection.

      The available ProtocolCollection is created when this class is loaded by the classloader.

      This implementation uses the ServiceLoader to load the collection based on all ProtocolDescriptor implementations found using all the /META-INF/services/org.firebirdsql.gds.ng.wire.ProtocolDescriptor in the classpath. If multiple implementations with the same value for ProtocolDescriptor.getVersion() are found, then the first implementation with the highest value for ProtocolDescriptor.getWeight() will be loaded into the default collection.

      Returns:
      available ProtocolCollection
      Since:
      6
      See Also:
    • getProtocols

      public static ProtocolCollection getProtocols(String enableProtocol)
      Returns the protocol collection consisting of the supported protocol versions and the additional protocol versions defined by the enableProtocol connection string property.
      Parameters:
      enableProtocol - enable protocol connection property value, see AttachmentProperties.getEnableProtocol().
      Returns:
      supported protocols and the available additional protocols listed in enableProtocol
      Since:
      6