Public Member Functions | |
ComponentInfoTopologicalSortManager (HandleDataStore components, HandleDataStore containers, ReaderPreferenceReadWriteLock activationPendingRWLock, Set pendingContainerShutdown, ThreadPoolExecutor threadPool, Logger logger) | |
void | run () |
void | requestTopologicalSort () |
synchronized void | notifyTopologyChange (int containerHandleToNotify) |
ComponentInfo[] | getComponentShutdownOrder (ContainerInfo containerInfo) |
synchronized void | destroy () |
Manages TS.
com.cosylab.acs.maci.manager.ComponentInfoTopologicalSortManager.ComponentInfoTopologicalSortManager | ( | HandleDataStore | components, | |
HandleDataStore | containers, | |||
ReaderPreferenceReadWriteLock | activationPendingRWLock, | |||
Set | pendingContainerShutdown, | |||
ThreadPoolExecutor | threadPool, | |||
Logger | logger | |||
) |
components | ||
containers |
References com.cosylab.acs.maci.manager.HandleDataStore.get(), and com.cosylab.acs.maci.manager.HandleDataStore.next().
synchronized void com.cosylab.acs.maci.manager.ComponentInfoTopologicalSortManager.destroy | ( | ) |
Destroy (terminate thread).
ComponentInfo [] com.cosylab.acs.maci.manager.ComponentInfoTopologicalSortManager.getComponentShutdownOrder | ( | ContainerInfo | containerInfo | ) |
Get component shutdown order for container.
containerInfo | valid container's info, if null complete TS is returned. |
References com.cosylab.acs.maci.ComponentInfo.getContainerName(), and com.cosylab.acs.maci.ContainerInfo.getName().
synchronized void com.cosylab.acs.maci.manager.ComponentInfoTopologicalSortManager.notifyTopologyChange | ( | int | containerHandleToNotify | ) |
Notify about (possible) topology change and initiates sorting.
containerHandleToNotify | container handle to notify. |
void com.cosylab.acs.maci.manager.ComponentInfoTopologicalSortManager.requestTopologicalSort | ( | ) |
Request topological sort.
References com.cosylab.acs.maci.manager.ReaderPreferenceReadWriteLock.writeLock().
void com.cosylab.acs.maci.manager.ComponentInfoTopologicalSortManager.run | ( | ) |
(Sync is clean since activationPendingRWLock is acquired and all notify request is issued only from its reader lock).
References com.cosylab.acs.maci.IntArray.add(), com.cosylab.acs.maci.manager.HandleDataStore.get(), com.cosylab.acs.maci.ComponentInfo.getContainerName(), com.cosylab.acs.maci.ContainerInfo.getName(), com.cosylab.acs.maci.manager.HandleDataStore.isAllocated(), com.cosylab.acs.maci.IntArray.size(), com.cosylab.acs.maci.IntArray.toArray(), and com.cosylab.acs.maci.manager.ReaderPreferenceReadWriteLock.writeLock().