Merge "Randomize port to allow concurrent execution"
[bgpcep.git] / pcep / api / src / main / java / org / opendaylight / protocol / pcep / tlv / OrderTlv.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.protocol.pcep.tlv;
9
10 import org.opendaylight.protocol.pcep.PCEPTlv;
11
12 /**
13  * The Order TLV is an optional TLV in the RP object, that indicates the order
14  * in which the old TE LSP must be removed and the new TE LSP must be setup
15  * during a reoptimization. It is carried in the PCRep message in response to a
16  * reoptimization request.
17  * 
18  * @see <a href="http://tools.ietf.org/html/rfc5557#section-5.4">The Order
19  *      Response [RFC5557]</a>
20  */
21 public class OrderTlv implements PCEPTlv {
22
23         private static final long serialVersionUID = 4275350142878198146L;
24
25         private final long deleteOrder;
26         private final long setupOrder;
27
28         /**
29          * Constructs new Order tlv with all mandatory objects.
30          * 
31          * @param deleteOrder
32          *            32-bit integer
33          * @param setupOrder
34          *            32-bit integer
35          */
36         public OrderTlv(long deleteOrder, long setupOrder) {
37                 super();
38                 this.deleteOrder = deleteOrder;
39                 this.setupOrder = setupOrder;
40         }
41
42         /**
43          * Gets the delete order
44          * 
45          * @return the delete order
46          */
47         public long getDeleteOrder() {
48                 return this.deleteOrder;
49         }
50
51         /**
52          * Gets the setup order
53          * 
54          * @return the setup order
55          */
56         public long getSetupOrder() {
57                 return this.setupOrder;
58         }
59
60         @Override
61         public String toString() {
62                 final StringBuilder builder = new StringBuilder();
63                 builder.append("OrderTlv [deleteOrder=");
64                 builder.append(this.deleteOrder);
65                 builder.append(", setupOrder=");
66                 builder.append(this.setupOrder);
67                 builder.append("]");
68                 return builder.toString();
69         }
70
71         @Override
72         public int hashCode() {
73                 final int prime = 31;
74                 int result = 1;
75                 result = prime * result + (int) (this.deleteOrder ^ (this.deleteOrder >>> 32));
76                 result = prime * result + (int) (this.setupOrder ^ (this.setupOrder >>> 32));
77                 return result;
78         }
79
80         @Override
81         public boolean equals(Object obj) {
82                 if (this == obj)
83                         return true;
84                 if (obj == null)
85                         return false;
86                 if (this.getClass() != obj.getClass())
87                         return false;
88                 final OrderTlv other = (OrderTlv) obj;
89                 if (this.deleteOrder != other.deleteOrder)
90                         return false;
91                 if (this.setupOrder != other.setupOrder)
92                         return false;
93                 return true;
94         }
95
96 }