package org.ovirt.engine.core.notifier.transport; import java.util.HashSet; import java.util.Set; import org.ovirt.engine.core.notifier.dao.DispatchResult; import org.ovirt.engine.core.notifier.filter.AuditLogEvent; public abstract class Transport implements Observable { private Set<Observer> observers = new HashSet<>(); /** * * @return the name for this transport */ public abstract String getName(); /** * * @return true if active. */ public abstract boolean isActive(); /** * Dispatches event to an address. * * @param event * the event to dispatch * @param address * an address understood by this transport */ public abstract void dispatchEvent(AuditLogEvent event, String address); /** * Upon an idle call a transport performs background tasks if needed. * A default empty implementation is provided. */ public void idle() { } @Override public void notifyObservers(DispatchResult data) { for (Observer observer : observers) { observer.update(this, data); } } @Override public void registerObserver(Observer observer) { observers.add(observer); } @Override public void removeObserver(Observer observer) { observers.remove(observer); } }