Package org.firebirdsql.gds.ng.wire

## Class ProtocolCollection

- java.lang.Object
- - org.firebirdsql.gds.ng.wire.ProtocolCollection

- All Implemented Interfaces:
    `java.lang.Iterable<ProtocolDescriptor>`

      public final class ProtocolCollection
      extends java.lang.Object
      implements java.lang.Iterable<ProtocolDescriptor>

  Collection of protocols for a connect request.

  In general use `getDefaultCollection()` to retrieve the default collection.

  Since:
    3.0
  Author:
    Mark Rotteveel

- - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static ProtocolCollection` | `create​(ProtocolDescriptor... descriptors)` | Creates a ProtocolCollection with the specified ProtocolDescriptors.
    `static ProtocolCollection` | `getDefaultCollection()` | Returns the default ProtocolCollection.
    `int` | `getProtocolCount()` |
    `ProtocolDescriptor` | `getProtocolDescriptor​(int protocolVersion)` |
    `java.util.List<java.lang.Integer>` | `getProtocolVersions()` | Get a list with the protocol versions in this collection.
    `java.util.Iterator<ProtocolDescriptor>` | `iterator()` |

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface java.lang.Iterable

      `forEach, spliterator`

- - ### Method Detail

    - #### iterator

          public java.util.Iterator<ProtocolDescriptor> iterator()

      Specified by:
        `iterator` in interface `java.lang.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 java.util.List<java.lang.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

    - #### 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

    - #### getDefaultCollection

          public static ProtocolCollection getDefaultCollection()

      Returns the default ProtocolCollection.

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

      This implementation uses the `ServiceLoader` to load the default 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:
        The default ProtocolCollection
      See Also:
        `create(ProtocolDescriptor...)`