NETVIRT-1630 migrate to md-sal APIs
[netvirt.git] / vpnmanager / api / src / main / java / org / opendaylight / netvirt / vpnmanager / api / intervpnlink / InterVpnLinkCache.java
1 /*
2  * Copyright (c) 2017 Inocybe Technologies and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.netvirt.vpnmanager.api.intervpnlink;
9
10 import java.util.List;
11 import java.util.Optional;
12 import org.eclipse.jdt.annotation.NonNull;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.inter.vpn.link.rev160311.inter.vpn.link.states.InterVpnLinkState;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.inter.vpn.link.rev160311.inter.vpn.links.InterVpnLink;
15
16 /**
17  * Manages some utility caches in order to speed (avoid) reads from MD-SAL.
18  * InterVpnLink is something that rarely changes and is frequently queried.
19  *
20  * @author Thomas Pantelis
21  */
22 public interface InterVpnLinkCache {
23
24     void addInterVpnLinkToCaches(InterVpnLink interVpnLink);
25
26     void addInterVpnLinkStateToCaches(InterVpnLinkState interVpnLinkState);
27
28     void removeInterVpnLinkFromCache(InterVpnLink interVpnLink);
29
30     void removeInterVpnLinkStateFromCache(InterVpnLinkState interVpnLinkState);
31
32     Optional<InterVpnLinkDataComposite> getInterVpnLinkByName(String interVpnLinkName);
33
34     Optional<InterVpnLinkDataComposite> getInterVpnLinkByEndpoint(String endpointIp);
35
36     Optional<InterVpnLinkDataComposite> getInterVpnLinkByVpnId(String vpnId);
37
38     @NonNull
39     List<InterVpnLinkDataComposite> getAllInterVpnLinks();
40 }