package org.araqne.logstorage;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.CopyOnWriteArraySet;
public class CallbackSet {
private ConcurrentMap<Class<?>, CopyOnWriteArraySet<?>> callbackMap = new ConcurrentHashMap<Class<?>, CopyOnWriteArraySet<?>>();
@SuppressWarnings("unchecked")
public <T> CopyOnWriteArraySet<T> get(Class<T> class1) {
CopyOnWriteArraySet<?> result = callbackMap.get(class1);
if (result == null) {
result = new CopyOnWriteArraySet<T>();
CopyOnWriteArraySet<?> concensus = callbackMap.putIfAbsent(class1, result);
if (concensus != null)
result = concensus;
}
return (CopyOnWriteArraySet<T>) result;
}
}