Interface ViewStateManager
- 
- All Known Implementing Classes:
 ViewStateManagerImpl
public interface ViewStateManagerThe ViewStateManager is at the core of managing TopologyEventListeners, the 'view state' (changing vs changed) and sending out the appropriate and according TopologyEvents to the registered listeners - depending on the implementation it also supports the ClusterSyncService, which is invoked on handleNewView. 
- 
- 
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description voidbind(TopologyEventListener eventListener)Binds the given eventListener, sending it an INIT event if applicable.voidhandleActivated()Handles activation - ie marks this manager as activated thus the TOPOLOGY_INIT event can be sent to already bound listeners and subsequent calls to handleChanging/handleNewView will result in according/appropriate TOPOLOGY_CHANGING/ TOPOLOGY_CHANGED events.voidhandleChanging()Handles the fact that some (possibly early) indicator of a change in a topology has been detected and that a new view is being agreed upon (whatever that means, be it voting or similar).voidhandleDeactivated()Must be called when the corresponding service (typically a DiscoveryService implementation) is deactivated.voidhandleNewView(BaseTopologyView newView)Handles the fact that a new view became true/established and sends out TOPOLOGY_INIT to uninitialized listeners and TOPOLOGY_CHANGED to already initialized listeners (in the latter case, also sends a TOPOLOGY_CHANGING if that has not yet been done)voidinstallMinEventDelayHandler(DiscoveryService discoveryService, Scheduler scheduler, long minEventDelaySecs)Installs an optional 'min event delay handler' which, using the given scheduler, delays sending TOPOLOGY_CHANGED event after receiving a handleNewView - with the idea as to limit the number of toggling between view states.booleanunbind(TopologyEventListener eventListener)Unbinds the given eventListener, returning whether or not it was bound at all.intwaitForAsyncEvents(long timeout)for testing only: wait for any potentially queued async events to be delivered before returning. 
 - 
 
- 
- 
Method Detail
- 
installMinEventDelayHandler
void installMinEventDelayHandler(DiscoveryService discoveryService, Scheduler scheduler, long minEventDelaySecs)
Installs an optional 'min event delay handler' which, using the given scheduler, delays sending TOPOLOGY_CHANGED event after receiving a handleNewView - with the idea as to limit the number of toggling between view states. 
- 
bind
void bind(TopologyEventListener eventListener)
Binds the given eventListener, sending it an INIT event if applicable.- Parameters:
 eventListener- the eventListener that is to bind
 
- 
unbind
boolean unbind(TopologyEventListener eventListener)
Unbinds the given eventListener, returning whether or not it was bound at all.- Parameters:
 eventListener- the eventListner that is to unbind- Returns:
 - whether or not the listener was added in the first place
 
 
- 
handleActivated
void handleActivated()
Handles activation - ie marks this manager as activated thus the TOPOLOGY_INIT event can be sent to already bound listeners and subsequent calls to handleChanging/handleNewView will result in according/appropriate TOPOLOGY_CHANGING/ TOPOLOGY_CHANGED events. 
- 
handleDeactivated
void handleDeactivated()
Must be called when the corresponding service (typically a DiscoveryService implementation) is deactivated.Will mark this manager as deactivated and flags the last available view as not current.
 
- 
handleChanging
void handleChanging()
Handles the fact that some (possibly early) indicator of a change in a topology has been detected and that a new view is being agreed upon (whatever that means, be it voting or similar).Will send out TOPOLOGY_CHANGING to all initialized listeners.
 
- 
handleNewView
void handleNewView(BaseTopologyView newView)
Handles the fact that a new view became true/established and sends out TOPOLOGY_INIT to uninitialized listeners and TOPOLOGY_CHANGED to already initialized listeners (in the latter case, also sends a TOPOLOGY_CHANGING if that has not yet been done)- Parameters:
 newView- the new, established view true if we were either in changing mode or the newView was different from the previous one.
 
- 
waitForAsyncEvents
int waitForAsyncEvents(long timeout)
for testing only: wait for any potentially queued async events to be delivered before returning.- Parameters:
 timeout- time in millis to wait for at max - 0 to not wait at all - -1 to wait indefinitely- Returns:
 - 0 if no more async events exist, or the number of queued or in-flight (being sent) events if the timeout hit early
 
 
 - 
 
 -