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

Methods
`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`

### 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...)`