package org.sef4j.core.helpers.senders; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.sef4j.core.api.EventSender; /** * in-memory EventSender : append events in list, * this class is thread-safe, and offer operation to atomically "clearAndGet" event list * */ public class InMemoryEventSender<T> implements EventSender<T> { private Object lock = new Object(); private List<T> events = new ArrayList<T>(); // ------------------------------------------------------------------------ public InMemoryEventSender() { } // ------------------------------------------------------------------------ @Override public void sendEvent(T event) { synchronized(lock) { events.add(event); } } public void sendEvents(Collection<T> events) { synchronized(lock) { this.events.addAll(events); } } public List<T> clearAndGet() { List<T> res; synchronized(lock) { res = events; this.events = new ArrayList<T>(); } return res; } }