d33f3a0bb429fd256f19b126eaeea20f70d5208f
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / core / UdpConnectionMap.java
1 /*\r
2  * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 \r
9 package org.opendaylight.openflowjava.protocol.impl.core;\r
10 \r
11 import java.net.InetSocketAddress;\r
12 import java.util.Map;\r
13 import java.util.concurrent.ConcurrentHashMap;\r
14 \r
15 import org.opendaylight.openflowjava.protocol.impl.core.connection.MessageConsumer;\r
16 \r
17 /**\r
18  * As UDP communication is handled only by one channel, it is needed\r
19  * to store MessageConsumers, so that we know which consumer handles which channel\r
20 \r
21  * @author michal.polkorab\r
22  */\r
23 public final class UdpConnectionMap {\r
24 \r
25     private static Map<InetSocketAddress, MessageConsumer> connectionMap = new ConcurrentHashMap<>();\r
26 \r
27     private UdpConnectionMap() {\r
28         throw new UnsupportedOperationException("Utility class shouldn't be instantiated");\r
29     }\r
30 \r
31     /**\r
32      * @param address sender's address\r
33      * @return corresponding MessageConsumer\r
34      */\r
35     public static MessageConsumer getMessageConsumer(InetSocketAddress address) {\r
36         if(address == null){\r
37             throw new IllegalArgumentException("Address can not be null");\r
38         }\r
39         return connectionMap.get(address);\r
40     }\r
41 \r
42     /**\r
43      * @param address sender's address\r
44      * @param consumer MessageConsumer to be added / paired with specified address\r
45      */\r
46     public static void addConnection(InetSocketAddress address, MessageConsumer consumer) {\r
47         if(address == null){\r
48             throw new IllegalArgumentException("Address can not be null");\r
49         }\r
50         connectionMap.put(address, consumer);\r
51     }\r
52 \r
53     /**\r
54      * @param address sender's address\r
55      */\r
56     public static void removeConnection(InetSocketAddress address) {\r
57         if(address == null){\r
58             throw new IllegalArgumentException("Address can not be null");\r
59         }\r
60         connectionMap.remove(address);\r
61     }\r
62 }