Class RemoteTableDataService.TableLocationProviderImpl
- All Implemented Interfaces:
com.fishlib.base.log.LogOutputAppendable,RequestResultHandler,TableKey,TableLocationProvider,NamedImplementation
- Enclosing class:
- RemoteTableDataService
-
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 class com.illumon.iris.db.v2.locations.SubscriptionAggregator
subscriptionsFields inherited from interface com.illumon.iris.db.v2.locations.protocol.RequestResultHandler
NULLFields inherited from interface com.illumon.iris.db.v2.locations.TableLocationProvider
globalMark -
Method Summary
Modifier and TypeMethodDescriptionprotected voidRefresh and activate update pushing from the implementing class.booleanCheck if this subscription aggregator still has any valid subscribers - useful if there may have been no notifications delivered for some time, as a test to determine whether work should be done to maintain the underlying subscription.protected voidDeactivate pushed updates from the implementing class.Get a name for the implementing class.getName()allow TableLocationProvider instances to have names.protected TableLocationmakeTableLocation(TableLocationKey locationKey) Make a new implementation-appropriate TableLocation from the supplied key.protected <T> booleanmatchSubscriptionToken(T token) Verify that a notification pertains to a currently-active subscription.voidonComplete(TableDataRequest request) Invoked when the request completed successfully.voidonRejection(TableDataRequest request, String rejectionMessage, TableDataProtocol.RequestRejectionType requestRejectionType) Invoked when the specified request was rejected.voidonTableLocationKeyAdded(TableLocationKey locationKey) Invoked in response to atable locations requestfor each discoveredTableLocationKey.voidonTableLocationKeyRemoved(TableLocationKey locationKey) Invoked when the upstream provider has removed, or detected a removed location.voidInvoked in response to alocation refresh request.voidonTimeout(TableDataRequest request) Invoked when the specified request timed out before a response was received.protected voidMethod to override in order to observe successful activation.voidrefresh()Initialize or refresh state information about the list of existing locations.voidInitialize or refresh state information about the list of existing locations.voidrefreshAndRescan(Consumer<TableLocationKey> locationKeyObserver) Initialize or refresh state information about the list of existing locations.Optional toString path with more implementation detail.Methods inherited from class com.illumon.iris.db.v2.locations.AbstractTableLocationProvider
clearTableLocations, computeWithSubscriptionLock, deliverInitialSnapshot, doInitialization, ensureInitialized, getLog, getNamespace, getTableKey, getTableLocationIfPresent, getTableLocations, getTableName, getTableType, handleTableLocationKey, handleTableLocationKey, handleTableLocationKeyRemoved, isInitialized, mark, maybeReloadLocation, removeTableLocationKey, removeUnvisited, setInitialized, toStringMethods inherited from class com.illumon.iris.db.v2.locations.SubscriptionAggregator
activationFailed, activationSuccessful, subscribe, supportsSubscriptions, unsubscribeMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface com.illumon.iris.db.v2.locations.TableKey
append, asTableIdentifier, toStringHelper, toStringSimple, writeToMethods inherited from interface com.illumon.iris.db.v2.locations.TableLocationProvider
getTableLocation, getTableLocation, subscribe, supportsSubscriptions, traverse, unsubscribe
-
Method Details
-
getImplementationName
Description copied from interface:NamedImplementationGet a name for the implementing class. Useful for abstract classes that implement
LogOutputAppendableor overridetoString.The default implementation is correct, but not suitable for high-frequency usage.
- Specified by:
getImplementationNamein interfaceNamedImplementation- Returns:
- A name for the implementing class
-
activateUnderlyingDataSource
protected void activateUnderlyingDataSource()Description copied from class:SubscriptionAggregatorRefresh 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:
activateUnderlyingDataSourcein classSubscriptionAggregator<TableLocationProvider.Listener>
-
deactivateUnderlyingDataSource
protected void deactivateUnderlyingDataSource()Description copied from class:SubscriptionAggregatorDeactivate pushed updates from the implementing class. Must be called under the subscription lock.- Overrides:
deactivateUnderlyingDataSourcein classSubscriptionAggregator<TableLocationProvider.Listener>
-
matchSubscriptionToken
protected <T> boolean matchSubscriptionToken(T token) Description copied from class:SubscriptionAggregatorVerify that a notification pertains to a currently-active subscription. Must be called under the subscription lock.- Overrides:
matchSubscriptionTokenin classSubscriptionAggregator<TableLocationProvider.Listener>- Parameters:
token- A subscription-related object that the subclass can use to match a notification- Returns:
- True iff notification delivery should proceed
-
postActivationHook
protected void postActivationHook()Description copied from class:SubscriptionAggregatorMethod to override in order to observe successful activation.- Overrides:
postActivationHookin classSubscriptionAggregator<TableLocationProvider.Listener>
-
refresh
public void refresh()Description copied from interface:TableLocationProviderInitialize or refresh state information about the list of existing locations.- Specified by:
refreshin interfaceTableLocationProvider
-
refreshAndRescan
public void refreshAndRescan()Description copied from interface:TableLocationProviderInitialize 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:
refreshAndRescanin interfaceTableLocationProvider- Overrides:
refreshAndRescanin classAbstractTableLocationProvider
-
refreshAndRescan
Description copied from interface:TableLocationProviderInitialize 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:
refreshAndRescanin interfaceTableLocationProvider- Parameters:
locationKeyObserver- call this TableLocationKey consumer with each location encountered (instead of the default)
-
makeTableLocation
Description copied from class:AbstractTableLocationProviderMake a new implementation-appropriate TableLocation from the supplied key.- Specified by:
makeTableLocationin classAbstractTableLocationProvider- Parameters:
locationKey- The table location key- Returns:
- The new TableLocation
-
getName
Description copied from interface:TableLocationProviderallow TableLocationProvider instances to have names.- Specified by:
getNamein interfaceTableLocationProvider
-
toStringDetailed
Description copied from interface:TableKeyOptional toString path with more implementation detail.- Specified by:
toStringDetailedin interfaceTableKey- Returns:
- detailed conversion to string
-
onTimeout
Description copied from interface:RequestResultHandlerInvoked when the specified request timed out before a response was received.- Specified by:
onTimeoutin interfaceRequestResultHandler- Parameters:
request- the request object.
-
onRejection
public void onRejection(@NotNull TableDataRequest request, String rejectionMessage, TableDataProtocol.RequestRejectionType requestRejectionType) Description copied from interface:RequestResultHandlerInvoked when the specified request was rejected. This typically happens during subscription to a location- Specified by:
onRejectionin interfaceRequestResultHandler- Parameters:
request- the request object.rejectionMessage- a message for context about the rejectionrequestRejectionType- what type of rejection was received
-
onComplete
Description copied from interface:RequestResultHandlerInvoked when the request completed successfully.- Specified by:
onCompletein interfaceRequestResultHandler- Parameters:
request- the request object
-
onTableLocationKeyAdded
Description copied from interface:RequestResultHandlerInvoked in response to atable locations requestfor each discoveredTableLocationKey.- Specified by:
onTableLocationKeyAddedin interfaceRequestResultHandler- Parameters:
locationKey- the discoveredTableLocationKey
-
onTableLocationKeyRemoved
Description copied from interface:RequestResultHandlerInvoked when the upstream provider has removed, or detected a removed location.- Specified by:
onTableLocationKeyRemovedin interfaceRequestResultHandler- Parameters:
locationKey- theTableLocationKeythat was removed
-
onTableLocationState
Description copied from interface:RequestResultHandlerInvoked in response to alocation refresh request.- Specified by:
onTableLocationStatein interfaceRequestResultHandler- Parameters:
state- the updatedTableLocationStatefor the location requested
-
checkHasSubscribers
public boolean checkHasSubscribers()Description copied from class:SubscriptionAggregatorCheck if this subscription aggregator still has any valid subscribers - useful if there may have been no notifications delivered for some time, as a test to determine whether work should be done to maintain the underlying subscription.- Specified by:
checkHasSubscribersin interfaceRequestResultHandler- Overrides:
checkHasSubscribersin classSubscriptionAggregator<TableLocationProvider.Listener>- Returns:
- true if there are valid subscribers, else false
-