/* * 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 java.util.List; import org.onosproject.kafkaintegration.api.dto.EventSubscriber; import org.onosproject.kafkaintegration.api.dto.OnosEvent.Type; import org.onosproject.kafkaintegration.api.dto.RegistrationResponse; import org.onosproject.kafkaintegration.errors.InvalidApplicationException; import org.onosproject.kafkaintegration.errors.InvalidGroupIdException; import com.google.common.annotations.Beta; /** * APIs for subscribing to Onos Event Messages. */ @Beta public interface EventSubscriptionService { /** * Registers the external application to receive events generated in ONOS. * * @param appName Application Name * @return Registration Response DTO. */ RegistrationResponse registerListener(String appName); /** * Removes the Registered Listener. * * @param appName Application Name */ void unregisterListener(String appName); /** * Allows registered listener to subscribe for a specific event type. * * @param subscriber Subscription data containing the event type * @throws InvalidGroupIdException * @throws InvalidApplicationException */ void subscribe(EventSubscriber subscriber) throws InvalidGroupIdException, InvalidApplicationException; /** * Allows the registered listener to unsubscribe for a specific event. * * @param subscriber Subscription data containing the event type * @throws InvalidGroupIdException * @throws InvalidApplicationException */ void unsubscribe(EventSubscriber subscriber) throws InvalidGroupIdException, InvalidApplicationException; /** * Returns the event subscriber for various event types. * * @param type ONOS event type. * @return List of event subscribers */ List<EventSubscriber> getEventSubscribers(Type type); }