package org.radargun.service;
import org.infinispan.Cache;
import org.infinispan.notifications.Listener;
import org.infinispan.notifications.cachelistener.annotation.PartitionStatusChanged;
import org.infinispan.notifications.cachelistener.event.PartitionStatusChangedEvent;
import org.radargun.traits.TopologyHistory;
/**
* @author Matej Cimbora
*/
public class Infinispan70TopologyHistory extends InfinispanTopologyHistory {
public Infinispan70TopologyHistory(Infinispan60EmbeddedService service) {
super(service);
}
@Override
public void registerListener(Cache<?, ?> cache) {
cache.addListener(new Infinispan70TopologyAwareListener(cache.getName()));
}
@Listener
public class Infinispan70TopologyAwareListener extends TopologyAwareListener {
public Infinispan70TopologyAwareListener(String cacheName) {
super(cacheName);
}
@PartitionStatusChanged
public void onPartitionStatusChanged(PartitionStatusChangedEvent<?, ?> e) {
log.debug("Partition status update " + (e.isPre() ? "started" : "finished"));
TopologyHistory.Event.EventType type = e.isPre() ? TopologyHistory.Event.EventType.START : TopologyHistory.Event.EventType.END;
addEvent(cacheStatusChanges, cacheName, type, 0, 0);
}
}
}