Interface TableLocationProvider

All Superinterfaces:
NamedImplementation
All Known Implementing Classes:
AbstractTableLocationProvider, PollingTableLocationProvider, SingleTableLocationProvider

public interface TableLocationProvider extends NamedImplementation
Discovery utility for TableLocations for a given table.
  • Method Details

    • getKey

      Get the TableKey associated with this provider.
      Returns:
      The associated TableKey
    • supportsSubscriptions

      boolean supportsSubscriptions()
      Does this provider support subscriptions? That is, can this provider ever have ticking data?
      Returns:
      True if this provider supports subscriptions.
    • subscribe

      void subscribe(@NotNull @NotNull TableLocationProvider.Listener listener)

      Subscribe to pushed location additions. Subscribing more than once with the same listener without an intervening unsubscribe is an error, and may result in undefined behavior.

      This is a possibly asynchronous operation - listener will receive 0 or more handleTableLocationKey callbacks, followed by 0 or 1 handleException callbacks during invocation and continuing after completion, on a thread determined by the implementation. As noted in BasicTableDataListener.handleException(TableDataException), an exception callback signifies that the subscription is no longer valid, and no unsubscribe is required in that case. Callers must not hold any lock that prevents notification delivery while subscribing. Callers must guard against duplicate notifications.

      This method only guarantees eventually consistent state. To force a state update, use run() after subscription completes.

      Parameters:
      listener - A listener.
    • unsubscribe

      void unsubscribe(@NotNull @NotNull TableLocationProvider.Listener listener)
      Unsubscribe from pushed location additions.
      Parameters:
      listener - The listener to forget about.
    • refresh

      void refresh()
      Initialize or refresh state information about the list of existing locations.
    • ensureInitialized

      TableLocationProvider ensureInitialized()
      Ensure that this location provider is initialized. Mainly useful in cases where it cannot be otherwise guaranteed that refresh() or subscribe(Listener) has been called prior to calls to the various table location fetch methods.
      Returns:
      this, to allow method chaining
    • getTableLocationKeys

      @NotNull @NotNull Collection<ImmutableTableLocationKey> getTableLocationKeys()
      Get this provider's currently known location keys. The locations specified by the keys returned may have null size - that is, they may not "exist" for application purposes. getTableLocation(TableLocationKey) is guaranteed to succeed for all results.
      Returns:
      A collection of keys for locations available from this provider
    • hasTableLocationKey

      boolean hasTableLocationKey(@NotNull @NotNull TableLocationKey tableLocationKey)
      Check if this provider knows the supplied location key.
      Parameters:
      tableLocationKey - The key to test for
      Returns:
      Whether the key is known to this provider
    • getTableLocation

      @NotNull default @NotNull TableLocation getTableLocation(@NotNull @NotNull TableLocationKey tableLocationKey)
      Parameters:
      tableLocationKey - A TableLocationKey specifying the location to get
      Returns:
      The TableLocation matching the given key
    • getTableLocationIfPresent

      @Nullable @Nullable TableLocation getTableLocationIfPresent(@NotNull @NotNull TableLocationKey tableLocationKey)
      Parameters:
      tableLocationKey - A TableLocationKey specifying the location to get
      Returns:
      The TableLocation matching the given key if present, else null
    • getName

      default String getName()
      Allow TableLocationProvider instances to have names.