Adding ISharedCollectionsService and implementation in HazelcastDatagrid.
Change-Id: Iace8b57b4b8f6e43dadacaed0415c77f72efe46b
diff --git a/src/main/java/net/onrc/onos/core/datagrid/ISharedCollectionsService.java b/src/main/java/net/onrc/onos/core/datagrid/ISharedCollectionsService.java
new file mode 100644
index 0000000..30e5596
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/datagrid/ISharedCollectionsService.java
@@ -0,0 +1,32 @@
+package net.onrc.onos.core.datagrid;
+
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.ConcurrentMap;
+
+import net.floodlightcontroller.core.module.IFloodlightService;
+
+/**
+ * Interface for providing shared maps and queues to other modules.
+ */
+public interface ISharedCollectionsService extends IFloodlightService {
+ /**
+ * Create an shared, concurrent map.
+ *
+ * @param mapName the shared map name.
+ * @param typeK the type of the Key in the map.
+ * @param typeV the type of the Value in the map.
+ * @return the shared map for the channel name.
+ */
+ <K, V> ConcurrentMap<K, V> getConcurrentMap(String mapName,
+ Class<K> typeK, Class<V> typeV);
+
+ /**
+ * Create an shared, blocking queue.
+ *
+ * @param queueName the shared queue name.
+ * @param typeT the type of the queue.
+ * @return the shared queue for the queue name.
+ */
+ <T> BlockingQueue<T> getBlockingQueue(String queueName,
+ Class<T> typeT);
+}