Class TableLocationProvider.NullTableLocationProvider
- All Implemented Interfaces:
com.fishlib.base.log.LogOutputAppendable
,TableKey
,TableLocationProvider
,NamedImplementation
- Enclosing interface:
- TableLocationProvider
-
Nested Class Summary
Nested classes/interfaces inherited from interface com.illumon.iris.db.v2.locations.TableKey
TableKey.KeyedObjectKeyImpl<VALUE_TYPE>, TableKey.SelfKeyedObjectKeyImpl<VALUE_TYPE extends TableKey>
Nested classes/interfaces inherited from interface com.illumon.iris.db.v2.locations.TableLocationProvider
TableLocationProvider.Listener, TableLocationProvider.NullTableLocationProvider
-
Field Summary
Fields inherited from interface com.illumon.iris.db.v2.locations.TableLocationProvider
globalMark
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionEnsure that this location provider is initialized.getTableLocationIfPresent
(TableLocationKey tableLocationKey) Get this provider's currently available locations.void
mark
(long mark) Indicate the start of a sweep of locations.void
refresh()
Initialize or refresh state information about the list of existing locations.void
Initialize or refresh state information about the list of existing locations.void
refreshAndRescan
(Consumer<TableLocationKey> locationKeyObserver) Initialize or refresh state information about the list of existing locations.void
removeTableLocationKey
(TableLocationKey locationKey) Remove the given table location from the tableLocations map.boolean
removeUnvisited
(long mark) Removes any locations that were not visited after the given mark time.void
subscribe
(TableLocationProvider.Listener listener) Subscribe to pushed location additions.boolean
Does this provider support subscriptions? That is, can this provider ever have ticking data?traverse()
Collect information about the providers in this TableLocationProvider and return the result as a Tree.void
unsubscribe
(TableLocationProvider.Listener listener) Unsubscribe from pushed location additions.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface com.illumon.util.type.NamedImplementation
getImplementationName
Methods inherited from interface com.illumon.iris.db.v2.locations.TableKey
append, asTableIdentifier, toStringDetailed, toStringHelper, toStringSimple, writeTo
Methods inherited from interface com.illumon.iris.db.v2.locations.TableLocationProvider
getName, getTableLocation, getTableLocation
-
Constructor Details
-
NullTableLocationProvider
Constructor. This will return no locations for the given key.- Parameters:
key
- the key to ignore
-
-
Method Details
-
getNamespace
- Specified by:
getNamespace
in interfaceTableKey
- Returns:
- The namespace enclosing this table
-
getTableName
- Specified by:
getTableName
in interfaceTableKey
- Returns:
- The name of this table
-
getTableType
- Specified by:
getTableType
in interfaceTableKey
- Returns:
- The type of this table (which generally dictates storage, metadata-availability, etc)
-
mark
public void mark(long mark) Description copied from interface:TableLocationProvider
Indicate the start of a sweep of locations. This will be used to detect locations that have been removed from downstream.- Specified by:
mark
in interfaceTableLocationProvider
- Parameters:
mark
- the value to set
-
removeUnvisited
public boolean removeUnvisited(long mark) Description copied from interface:TableLocationProvider
Removes any locations that were not visited after the given mark time.- Specified by:
removeUnvisited
in interfaceTableLocationProvider
- Parameters:
mark
- any locations last visited before this mark will be removed.- Returns:
- true if any locations were removed.
-
supportsSubscriptions
public boolean supportsSubscriptions()Description copied from interface:TableLocationProvider
Does this provider support subscriptions? That is, can this provider ever have ticking data?- Specified by:
supportsSubscriptions
in interfaceTableLocationProvider
- Returns:
- True if this provider supports subscriptions.
-
subscribe
Description copied from interface:TableLocationProvider
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 handleTableLocation 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 refresh() after subscription completes.
- Specified by:
subscribe
in interfaceTableLocationProvider
- Parameters:
listener
- A listener.
-
unsubscribe
Description copied from interface:TableLocationProvider
Unsubscribe from pushed location additions.- Specified by:
unsubscribe
in interfaceTableLocationProvider
- Parameters:
listener
- The listener to forget about.
-
refresh
public void refresh()Description copied from interface:TableLocationProvider
Initialize or refresh state information about the list of existing locations.- Specified by:
refresh
in interfaceTableLocationProvider
-
refreshAndRescan
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.- Specified by:
refreshAndRescan
in interfaceTableLocationProvider
- Parameters:
locationKeyObserver
- call this TableLocationKey consumer with each location encountered (instead of the default)
-
refreshAndRescan
public void refreshAndRescan()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.- Specified by:
refreshAndRescan
in interfaceTableLocationProvider
-
ensureInitialized
Description copied from interface:TableLocationProvider
Ensure that this location provider is initialized. Mainly useful in cases where it cannot be otherwise guaranteed thatTableLocationProvider.refresh()
orTableLocationProvider.subscribe(Listener)
has been called prior to calls to the various table location fetch methods.- Specified by:
ensureInitialized
in interfaceTableLocationProvider
- Returns:
- this, to allow method chaining
-
getTableLocations
Description copied from interface:TableLocationProvider
Get this provider's currently available locations. Locations returned may have null size - that is, they may not "exist" for application purposes.- Specified by:
getTableLocations
in interfaceTableLocationProvider
- Returns:
- A collection of locations available from this provider
-
traverse
Description copied from interface:TableLocationProvider
Collect information about the providers in this TableLocationProvider and return the result as a Tree.- Specified by:
traverse
in interfaceTableLocationProvider
- Returns:
- a Tree of the nested TableLocationProviders comprising this one
-
getTableLocationIfPresent
@Nullable public TableLocation getTableLocationIfPresent(@NotNull TableLocationKey tableLocationKey) - Specified by:
getTableLocationIfPresent
in interfaceTableLocationProvider
- Parameters:
tableLocationKey
- A key specifying the location to get- Returns:
- The TableLocation matching the given key if present, else null
-
removeTableLocationKey
Description copied from interface:TableLocationProvider
Remove the given table location from the tableLocations map. Use with caution: the intent is that when a TableLocationProvider is told that a location is gone, we should quit providing it in the list of locations, and quit asking downstream providers how big it is.- Specified by:
removeTableLocationKey
in interfaceTableLocationProvider
- Parameters:
locationKey
- the TableLocation to remove
-