[ONOS-3833] Added data structure to store load balance path info

Change-Id: Icf73a7c91652c2532db889fb4df70232a16650a2
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortChain.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortChain.java
index d147eaa..ba87010 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortChain.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/PortChain.java
@@ -16,6 +16,8 @@
 package org.onosproject.vtnrsc;
 
 import java.util.List;
+import java.util.Optional;
+import java.util.Set;
 
 /**
  * Abstraction of an entity providing Port Chain information.
@@ -70,6 +72,55 @@
     List<FlowClassifierId> flowClassifiers();
 
     /**
+     * Adds a new load balanced path.
+     *
+     * @param fiveTuple five tuple from the packet
+     * @param id load balance path identifier
+     * @param path load balanced path of list of port pairs
+     */
+    void addLoadBalancePath(FiveTuple fiveTuple, LoadBalanceId id,
+                            List<PortPairId> path);
+
+    /**
+     * Get the load balance id from five tuple.
+     *
+     * @param fiveTuple five tuple from the packet
+     * @return load balance identifier for the given packet
+     */
+    LoadBalanceId getLoadBalanceId(FiveTuple fiveTuple);
+
+    /**
+     * Get the keys set from load balanced id map.
+     *
+     * @return set of five tuple info
+     */
+    Set<FiveTuple> getLoadBalanceIdMapKeys();
+
+    /**
+     * Get the load balanced path from load balance Id.
+     *
+     * @param id load balance id.
+     * @return path containing list of port pairs
+     */
+    List<PortPairId> getLoadBalancePath(LoadBalanceId id);
+
+    /**
+     * Get the load balanced path from five tuple.
+     *
+     * @param fiveTuple five tuple from the packet
+     * @return path containing list of port pairs
+     */
+    List<PortPairId> getLoadBalancePath(FiveTuple fiveTuple);
+
+    /**
+     * Match the given path with existing load balanced paths.
+     *
+     * @param path load balanced path
+     * @return load balance id if the path matches, null otherwise.
+     */
+    Optional<LoadBalanceId> matchPath(List<PortPairId> path);
+
+    /**
      * Returns whether this port chain is an exact match to the port chain given
      * in the argument.
      * <p>