    001    package com.hammurapi.eventbus;
    002
    003    import java.util.Queue;
    004
    005    import com.hammurapi.common.ExceptionHandler;
    006    import com.hammurapi.common.concurrent.TrackingExecutorService;
    007    import com.hammurapi.eventbus.AbstractEventBus.Handle;
    008
    009    /**
    010     * Wrapper interface.
    011     * @author Pavel Vlasov
    012     *
    013     * @param <E>
    014     * @param <P>
    015     */
    016    public interface JoinEventHandler<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> {
    017
    018            /**
    019             * Posts event for handling.
    020             * @param context Event dispatching context.
    021             * @param events Events to handle. An event to handle if there is one event.
    022             * A tuple of joined events to handle otherwise.
    023             * @return Events to post to the bus as a result of event handling.
    024             */
    025            void post(
    026                            EventDispatchContext<E,P,C,H,S> context,
    027                            InferenceContext<E,P,C,K,H,S> inferenceContext,
    028                            Handle<E,P,C,K>[]... events);
    029
    030    }