com.brightcove.player.controller

## Class DefaultSourceSelectionController

- java.lang.Object
- - com.brightcove.player.event.AbstractComponent
  - - com.brightcove.player.controller.DefaultSourceSelectionController

- All Implemented Interfaces:
    SourceSelector, Component
  Direct Known Subclasses:
    ExoPlayerSourceSelectionController

      @ListensFor(events="selectSource")
       @Emits(events="sourceNotFound")
      public class DefaultSourceSelectionController
      extends AbstractComponent
      implements Component, SourceSelector

  Default `SourceSelector` controller responsible to react to the `EventType.SELECT_SOURCE` event and call `SourceSelector.selectSource(Video)` of the `SourceSelector` set. By default, `BrightcoveSourceSelector` is used.

  The selected `Source` will be added to the `EventType.SELECT_SOURCE` event properties with the `AbstractEvent.SOURCE` key.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `TAG`

    - ### Fields inherited from class com.brightcove.player.event.AbstractComponent

      `eventEmitter, listenerTokens`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DefaultSourceSelectionController(EventEmitter eventEmitter)` Initializes this controller with the given EventEmitter using the default `BrightcoveSourceSelector`.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static DefaultSourceSelectionController` | `create(EventEmitter eventEmitter)` Creates the Default Source Selection Controller using the default `BrightcoveSourceSelector`.
    `static DefaultSourceSelectionController` | `createWithSourceSelector(EventEmitter eventEmitter, SourceSelector sourceSelector)` Creates the Default Source Selection Controller with a custom `SourceSelector`.
    `Source` | `findBestSourceByBitRate(SourceCollection sourceCollection, java.lang.Integer bitRate)` Given a SourceCollection, finds the Source with the closest bit rate to the given value.
    `SourceSelector` | `getSourceSelector()`
    `protected void` | `initializeListeners()`
    `protected Source` | `selectSource(java.util.Set<Source> sources)` Attempts to select the HTTPS source included in the source Set, if available.
    `Source` | `selectSource(Video video)` Determines best appropriate Source within given Video object based on logic implemented.
    `void` | `setSourceSelector(SourceSelector sourceSelector)`

    - ### Methods inherited from class com.brightcove.player.event.AbstractComponent

      `addListener, addOnceListener, getEventEmitter, removeListener, removeListeners`

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

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

- - ### Field Detail

    - #### TAG

          public static final java.lang.String TAG

  - ### Constructor Detail

    - #### DefaultSourceSelectionController

          public DefaultSourceSelectionController(@NonNull
                                                  EventEmitter eventEmitter)

      Initializes this controller with the given EventEmitter using the default `BrightcoveSourceSelector`.
      Parameters:
        `eventEmitter` - the EventEmitter through which this controller will interact

  - ### Method Detail

    - #### create

          public static DefaultSourceSelectionController create(@NonNull
                                                                EventEmitter eventEmitter)

      Creates the Default Source Selection Controller using the default `BrightcoveSourceSelector`.
      Parameters:
        `eventEmitter` - the event emitter
      Returns:
        the default source selection controller

    - #### createWithSourceSelector

          public static DefaultSourceSelectionController createWithSourceSelector(@NonNull
                                                                                  EventEmitter eventEmitter,
                                                                                  @NonNull
                                                                                  SourceSelector sourceSelector)

      Creates the Default Source Selection Controller with a custom `SourceSelector`.
      Parameters:
        `eventEmitter` - the event emitter
        `sourceSelector` - the source selector
      Returns:
        the default source selection controller

    - #### setSourceSelector

          public void setSourceSelector(@NonNull
                                        SourceSelector sourceSelector)

    - #### getSourceSelector

          @NonNull
          public SourceSelector getSourceSelector()

    - #### selectSource

          @NonNull
          public Source selectSource(@NonNull
                                              Video video)
                                       throws NoSourceFoundException

      Description copied from interface: `SourceSelector`
      Determines best appropriate Source within given Video object based on logic implemented.
      Specified by:
        `selectSource` in interface `SourceSelector`
      Parameters:
        `video` - Video in which to find the most appropriate Source
      Returns:
        the best matched Source based on the currently implemented selection logic
      Throws:
        `NoSourceFoundException` - when no valid `Source` is found
      See Also:
        `SourceSelector.selectSource(com.brightcove.player.model.Video)`

    - #### selectSource

          @Nullable
          protected Source selectSource(@Nullable
                                                  java.util.Set<Source> sources)

      Attempts to select the HTTPS source included in the source Set, if available. Otherwise, it will select the first source given by the Set Iterator.

      It will return null if the sources Set is null or empty.

      Parameters:
        `sources` - the source Set.
      Returns:
        the selected source

    - #### findBestSourceByBitRate

          public Source findBestSourceByBitRate(SourceCollection sourceCollection,
                                                java.lang.Integer bitRate)

      Given a SourceCollection, finds the Source with the closest bit rate to the given value.
      Parameters:
        `sourceCollection` - the collection of Sources in which the match should be found
        `bitRate` - the target bit rate desired for the chosen Source
      Returns:
        the Source that most closely matches the given bit rate, or any Source, if no match can be found

    - #### initializeListeners

          protected void initializeListeners()