package org.infinispan.notifications.cachelistener.cluster;
import java.util.Collection;
import java.util.UUID;
import org.infinispan.commons.CacheException;
import org.infinispan.remoting.transport.Address;
public interface ClusterEventManager<K, V> {
/**
* Adds additional cluster events that need to be sent remotely for an event originating locally.
* These events are not sent at time of registering but rather after the {@link ClusterEventManager#sendEvents()} is invoked.
* These events are gathered on a per thread basis and batched to reduce number of RPCs required.
* @param target The target node this event was meant for
* @param identifier The cluster listener that is identified for these events
* @param events The events that were generated
* @param sync Whether these events need to be sent synchronously or not
*/
public void addEvents(Address target, UUID identifier, Collection<ClusterEvent<K, V>> events, boolean sync);
/**
* Sends all previously added events on this thread
*/
public void sendEvents() throws CacheException;
/**
* Drops and ignores all previously added events on this thread.
*/
public void dropEvents();
}