| /* |
| * Copyright 2018-present Open Networking Foundation |
| * |
| * 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.mcast.api; |
| |
| import com.google.common.annotations.Beta; |
| import org.onosproject.net.ConnectPoint; |
| import org.onosproject.net.HostId; |
| import org.onosproject.store.Store; |
| |
| import java.util.Set; |
| |
| /** |
| * Entity responsible for storing Multicast state information. |
| */ |
| @Beta |
| public interface McastStore extends Store<McastEvent, McastStoreDelegate> { |
| |
| /** |
| * Updates the store with the route information. |
| * |
| * @param route a Multicast route |
| */ |
| void storeRoute(McastRoute route); |
| |
| /** |
| * Removes from the store the route information. |
| * |
| * @param route a Multicast route |
| */ |
| void removeRoute(McastRoute route); |
| |
| /** |
| * Updates the store with a host based source information for a given route. There may be |
| * multiple source connect points for the given host. |
| * |
| * @param route a Multicast route |
| * @param hostId the host source |
| * @param connectPoints the sources connect point |
| */ |
| void storeSource(McastRoute route, HostId hostId, Set<ConnectPoint> connectPoints); |
| |
| /** |
| * Updates the store with source information for a given route. |
| * The source stored with this method are not tied with any host. |
| * Traffic will be sent from all of them. |
| * |
| * @param route a Multicast route |
| * @param sources set of specific connect points |
| */ |
| void storeSources(McastRoute route, Set<ConnectPoint> sources); |
| |
| /** |
| * Removes from the store all the sources information for a given route. |
| * |
| * @param route a Multicast route |
| */ |
| void removeSources(McastRoute route); |
| |
| /** |
| * Removes from the store the source information for the given route. |
| * |
| * @param route a Multicast route |
| * @param source a source |
| */ |
| void removeSource(McastRoute route, HostId source); |
| |
| /** |
| * Removes a set of source connect points for a given host the route. |
| * |
| * @param route the multicast route |
| * @param hostId a source host |
| * @param connectPoints a given set of connect points to remove |
| */ |
| void removeSources(McastRoute route, HostId hostId, Set<ConnectPoint> connectPoints); |
| |
| /** |
| * Updates the store with a host based sink information for a given route. There may be |
| * multiple sink connect points for the given host. |
| * |
| * @param route a Multicast route |
| * @param hostId the host sink |
| * @param sinks the sinks |
| */ |
| void addSink(McastRoute route, HostId hostId, Set<ConnectPoint> sinks); |
| |
| /** |
| * Updates the store with sinks information for a given route. |
| * The sinks stored with this method are not tied with any host. |
| * Traffic will be sent to all of them. |
| * |
| * @param route a Multicast route |
| * @param sinks set of specific connect points |
| */ |
| void addSinks(McastRoute route, Set<ConnectPoint> sinks); |
| |
| /** |
| * Removes from the store all the sink information for a given route. |
| * |
| * @param route a Multicast route |
| */ |
| void removeSinks(McastRoute route); |
| |
| /** |
| * Removes from the store the complete set of sink information for a given host for a given route. |
| * |
| * @param route a Multicast route |
| * @param hostId a specific host |
| */ |
| void removeSink(McastRoute route, HostId hostId); |
| |
| /** |
| * Removes a set of sink connect points for a given host the route. |
| * |
| * @param route the multicast route |
| * @param hostId a sink host |
| * @param connectPoints a given set of connect points to remove |
| */ |
| void removeSinks(McastRoute route, HostId hostId, Set<ConnectPoint> connectPoints); |
| |
| /** |
| * Removes from the store the set of non host bind sink information for a given route. |
| * |
| * @param route a Multicast route |
| * @param sinks a set of Multicast sinks |
| */ |
| void removeSinks(McastRoute route, Set<ConnectPoint> sinks); |
| |
| /** |
| * Obtains the sources for a Multicast route. |
| * |
| * @param route a Multicast route |
| * @return a connect point |
| */ |
| Set<ConnectPoint> sourcesFor(McastRoute route); |
| |
| /** |
| * Obtains the sources for a given host for a given Multicast route. |
| * |
| * @param route a Multicast route |
| * @param hostId the host |
| * @return a set of sources |
| */ |
| Set<ConnectPoint> sourcesFor(McastRoute route, HostId hostId); |
| |
| /** |
| * Obtains the sinks for a Multicast route. |
| * |
| * @param route a Multicast route |
| * @return a set of sinks |
| */ |
| Set<ConnectPoint> sinksFor(McastRoute route); |
| |
| /** |
| * Obtains the sinks for a given host for a given Multicast route. |
| * |
| * @param route a Multicast route |
| * @param hostId the host |
| * @return a set of sinks |
| */ |
| Set<ConnectPoint> sinksFor(McastRoute route, HostId hostId); |
| |
| /** |
| * Gets the set of all known Multicast routes. |
| * |
| * @return set of Multicast routes. |
| */ |
| Set<McastRoute> getRoutes(); |
| |
| /** |
| * Gets the Multicast data for a given route. |
| * |
| * @param route the route |
| * @return set of Multicast routes. |
| */ |
| McastRouteData getRouteData(McastRoute route); |
| } |