Class WritableLocalTableLocationProvider

All Implemented Interfaces:
com.fishlib.base.log.LogOutputAppendable, TableKey, TableLocationProvider, NamedImplementation

public class WritableLocalTableLocationProvider extends AbstractTableLocationProvider
Location provider for writable table locations.
  • Method Details

    • doInitialization

      protected void doInitialization()
      Description copied from class: AbstractTableLocationProvider
      Initialization method for subclasses to override, in case simply calling TableLocationProvider.refresh() is inappropriate. This is *not* guaranteed to be called only once. It should internally call AbstractTableLocationProvider.setInitialized() upon successful initialization.
      Overrides:
      doInitialization in class AbstractTableLocationProvider
    • getImplementationName

      public String getImplementationName()
      Description copied from interface: NamedImplementation

      Get a name for the implementing class. Useful for abstract classes that implement LogOutputAppendable or override toString.

      The default implementation is correct, but not suitable for high-frequency usage.

      Returns:
      A name for the implementing class
    • refresh

      public void refresh()
      Description copied from interface: TableLocationProvider
      Initialize or refresh state information about the list of existing locations.
    • refreshAndRescan

      public void refreshAndRescan(@NotNull Consumer<TableLocationKey> locationKeyObserver)
      Description copied from interface: TableLocationProvider
      Initialize or refresh state information about the list of existing locations. If applicable, perform extra work to ensure any cached information is up to date.
      Parameters:
      locationKeyObserver - call this TableLocationKey consumer with each location encountered (instead of the default)
    • activateUnderlyingDataSource

      protected void activateUnderlyingDataSource()
      Description copied from class: SubscriptionAggregator

      Refresh and activate update pushing from the implementing class.

      If the implementation will deliver notifications in a different thread than the one that calls this method, then this method must be asynchronous - that is, it must not block pending delivery of results. This requirement holds even if that other thread has nothing to do with the initial activation request!

      Listeners should guard against duplicate notifications, especially if the implementation delivers synchronous notifications.

      The implementation should call activationSuccessful() when done activating and delivering initial refresh results, unless activationFailed() was called instead.

      Must be called under the subscription lock.

      Overrides:
      activateUnderlyingDataSource in class SubscriptionAggregator<TableLocationProvider.Listener>
    • deactivateUnderlyingDataSource

      protected void deactivateUnderlyingDataSource()
      Description copied from class: SubscriptionAggregator
      Deactivate pushed updates from the implementing class. Must be called under the subscription lock.
      Overrides:
      deactivateUnderlyingDataSource in class SubscriptionAggregator<TableLocationProvider.Listener>
    • matchSubscriptionToken

      protected <T> boolean matchSubscriptionToken(T token)
      Description copied from class: SubscriptionAggregator
      Verify that a notification pertains to a currently-active subscription. Must be called under the subscription lock.
      Overrides:
      matchSubscriptionToken in class SubscriptionAggregator<TableLocationProvider.Listener>
      Parameters:
      token - A subscription-related object that the subclass can use to match a notification
      Returns:
      True iff notification delivery should proceed
    • putIfAbsent

      public final WritableLocalTableLocation putIfAbsent(@NotNull TableLocationKey locationKey)
    • handleTableLocationKey

      public void handleTableLocationKey(@NotNull TableLocationKey locationKey)
      Deliver a possibly-new key.
      Overrides:
      handleTableLocationKey in class AbstractTableLocationProvider
      Parameters:
      locationKey - The new key
    • maybeReloadLocation

      protected boolean maybeReloadLocation(TableLocation tableLocation, boolean verifyCheckpoint, boolean observedLocationCreation)
      Description copied from class: AbstractTableLocationProvider
      Determine whether the table (checkpoint) has changed out from under us and reload if necessary.
      Overrides:
      maybeReloadLocation in class AbstractTableLocationProvider
      Parameters:
      tableLocation - the maybe-new table location
      verifyCheckpoint - true if we are in a mode calling for checking location checkpoints
      observedLocationCreation - true if the location was just created, vs pulled from a map. This may influence what work is performed in this method.
      Returns:
      if the checkpoint was reloaded
    • makeTableLocation

      @NotNull protected final WritableLocalTableLocation makeTableLocation(@NotNull TableLocationKey locationKey)
      Description copied from class: AbstractTableLocationProvider
      Make a new implementation-appropriate TableLocation from the supplied key.
      Specified by:
      makeTableLocation in class AbstractTableLocationProvider
      Parameters:
      locationKey - The table location key
      Returns:
      The new TableLocation