/**
 * Copyright 2016 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.listener;

import org.onosproject.event.ListenerService;
import org.onosproject.kafkaintegration.api.dto.OnosEvent.Type;

/**
 * APIs for starting and stopping a ONOS Event listener.
 *
 */
public interface OnosEventListener {

    /**
     * Start the listener for the specific ONOS event type.
     *
     * @param event ONOS event type
     * @param service ONOS event listener for the specific event type
     */
    void startListener(Type event, ListenerService<?, ?> service);

    /**
     * Stop the Listener for the specific ONOS event type.
     *
     * @param event ONOS event type
     * @param service ONOS event listener for the specific event type
     */
    void stopListener(Type event, ListenerService<?, ?> service);

}
