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);
+}