001 package com.hammurapi.eventbus;
002
003 import java.util.Queue;
004 import java.util.Set;
005
006 import com.hammurapi.common.ExceptionHandler;
007 import com.hammurapi.common.concurrent.TrackingExecutorService;
008 import com.hammurapi.eventbus.AbstractEventBus.Handle;
009 import com.hammurapi.extract.Predicate;
010
011 /**
012 * Wrapper interface.
013 * @author Pavel Vlasov
014 *
015 * @param <E>
016 * @param <P>
017 */
018 public interface EventHandlerWrapper<E, P extends Comparable<P>, C, K, H extends EventBus.Handle<E, P, C>, S extends EventStore<E,P,C,H,S>> extends EventHandlerBase<E, P, C> {
019
020 /**
021 * Posts event for handling.
022 * @param context Event dispatching context.
023 * @param events Events to handle. An event to handle if there is one event.
024 * A tuple of joined events to handle otherwise.
025 * @return Events to post to the bus as a result of event handling.
026 */
027 void post(
028 EventDispatchContext<E,P,C,H,S> context,
029 InferenceContext<E,P,C,K,H,S> inferenceContext,
030 Handle<E,P,C,K>... events);
031
032 /**
033 * @return set of registration keys. Shared join event handler can have more than one
034 * registration key. When the set becomes empty the handler shall be removed from the
035 * inference network. Join event handlers shall cascade remove(K) to target handlers.
036 */
037 Set<K> getRegistrationKeys();
038
039 EventHandler<E, P, C, H, S> getHandler();
040
041 void takeSnapshot(AbstractEventBus.Snapshot<E, P, C, K, H, S> snapshot, Set<K> taken);
042
043 /**
044 * Predicate which was used during registration.
045 * @return
046 */
047 Predicate<E, C> getPredicate();
048
049 // boolean isRemoved();
050
051 // void remove();
052 }