public final class InvokerEventHandler implements EventHandler<ProxyEvent>
{
    private final EventListener implementation;

    public InvokerEventHandler(final EventListener implementation)
    {
        this.implementation = implementation;
    }

    @Override
    public void onEvent(final ProxyEvent event, final long sequence, final boolean endOfBatch) throws Exception
    {
        switch(event.getMethod())
        {
            case EVENT_TYPE_A:
                implementation.onEventTypeA(event.getStringArg(), event.getIntArg());
                break;

            case EVENT_TYPE_B:
                implementation.onEventTypeB(event.getLongArg1(), event.getLongArg2());
                break;
        }
    }
}