/**
 * Copyright 2016-present Open Networking Laboratory
 * 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 org.onosproject.kafkaintegration.api;

import org.onosproject.event.EventListener;
import org.onosproject.kafkaintegration.api.dto.OnosEvent;

import com.google.common.annotations.Beta;

/**
 * API for listeners to listen for Events generated by the ONOS event listener.
 * At present the only listener will be a Kafka Manager or Module whose sole
 * purpose is to publish the received data to a Kafka message bus.
 *
 */
@Beta
public interface ExportableEventListener extends EventListener<OnosEvent> {

}
