56b6bb1a8a123457cd96dede185bef13b658565e
[openflowjava.git] / openflow-protocol-api / src / main / java / org / opendaylight / openflowjava / protocol / api / extensibility / MessageCodeKey.java
1 /*\r
2  * Copyright (c) 2013 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 package org.opendaylight.openflowjava.protocol.api.extensibility;\r
9 \r
10 /**\r
11  * @author michal.polkorab\r
12  */\r
13 public class MessageCodeKey {\r
14 \r
15     private short msgVersion;\r
16     private int msgType;\r
17     private Class<?> clazz;\r
18 \r
19     /**\r
20      * Constructor\r
21      * @param version wire protocol version\r
22      * @param value used as distinguisher (read from binary data / buffer)\r
23      * @param clazz class of object that is going to be deserialized\r
24      */\r
25     public MessageCodeKey(short version, int value, Class<?> clazz) {\r
26         this.msgVersion = version;\r
27         this.msgType = value;\r
28         this.clazz = clazz;\r
29     }\r
30 \r
31     @Override\r
32     public int hashCode() {\r
33         final int prime = 31;\r
34         int result = 1;\r
35         result = prime * result + ((clazz == null) ? 0 : clazz.hashCode());\r
36         result = prime * result + msgType;\r
37         result = prime * result + msgVersion;\r
38         return result;\r
39     }\r
40 \r
41     @Override\r
42     public boolean equals(Object obj) {\r
43         if (this == obj) {\r
44             return true;\r
45         }\r
46         if (obj == null) {\r
47             return false;\r
48         }\r
49         if (!(obj instanceof MessageCodeKey)) {\r
50             return false;\r
51         }\r
52         MessageCodeKey other = (MessageCodeKey) obj;\r
53         if (clazz == null) {\r
54             if (other.clazz != null) {\r
55                 return false;\r
56             }\r
57         } else if (!clazz.equals(other.clazz)) {\r
58             return false;\r
59         }\r
60         if (msgType != other.msgType) {\r
61             return false;\r
62         }\r
63         if (msgVersion != other.msgVersion) {\r
64             return false;\r
65         }\r
66         return true;\r
67     }\r
68 \r
69     @Override\r
70     public String toString() {\r
71         return "msgVersion: " + msgVersion + " objectClass: " + clazz.getName() + " msgType: " + msgType;\r
72     }\r
73 }