package se.l4.vibe.event; import se.l4.vibe.probes.Probe; import se.l4.vibe.probes.SampledProbe; /** * Abstraction for a collection of events. * * @author Andreas Holstenson * * @param <T> */ public interface Events<T> { /** * Register a new event. * * @param event */ void register(T event); /** * Register a new event with the specified severity. * * @param severity * @param event */ void register(EventSeverity severity, T event); /** * Get the default severity for this object. * * @return */ EventSeverity getDefaultSeverity(); /** * Add a listener that will receive events. * * @param listener */ void addListener(EventListener<T> listener); /** * Remove a listener that will receive events. * * @param listener */ void removeListener(EventListener<T> listener); /** * Get a probe that will return the total amount of events registered. * * @return */ Probe<Long> getTotalEventsProbe(); /** * Get a probe that will return the number of events received since it * was last sampled. * * @return */ SampledProbe<Long> getEventsProbe(); }