/*
 * Copyright 2011 LMAX Ltd.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.lmax.disruptor;

Callback interface to be implemented for processing events as they become available in the RingBuffer
Type parameters:
  • <T> – event implementation storing the data for sharing during exchange or parallel coordination of an event.
See Also:
/** * Callback interface to be implemented for processing events as they become available in the {@link RingBuffer} * * @param <T> event implementation storing the data for sharing during exchange or parallel coordination of an event. * @see BatchEventProcessor#setExceptionHandler(ExceptionHandler) if you want to handle exceptions propagated out of the handler. */
public interface EventHandler<T> {
Called when a publisher has published an event to the RingBuffer. The BatchEventProcessor will read messages from the RingBuffer in batches, where a batch is all of the events available to be processed without having to wait for any new event to arrive. This can be useful for event handlers that need to do slower operations like I/O as they can group together the data from multiple events into a single operation. Implementations should ensure that the operation is always performed when endOfBatch is true as the time between that message an the next one is inderminate.
Params:
  • event – published to the RingBuffer
  • sequence – of the event being processed
  • endOfBatch – flag to indicate if this is the last event in a batch from the RingBuffer
Throws:
  • Exception – if the EventHandler would like the exception handled further up the chain.
/** * Called when a publisher has published an event to the {@link RingBuffer}. The {@link BatchEventProcessor} will * read messages from the {@link RingBuffer} in batches, where a batch is all of the events available to be * processed without having to wait for any new event to arrive. This can be useful for event handlers that need * to do slower operations like I/O as they can group together the data from multiple events into a single * operation. Implementations should ensure that the operation is always performed when endOfBatch is true as * the time between that message an the next one is inderminate. * * @param event published to the {@link RingBuffer} * @param sequence of the event being processed * @param endOfBatch flag to indicate if this is the last event in a batch from the {@link RingBuffer} * @throws Exception if the EventHandler would like the exception handled further up the chain. */
void onEvent(T event, long sequence, boolean endOfBatch) throws Exception; }