2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.lispflowmapping.interfaces.dao;
10 import java.util.Date;
11 import java.util.concurrent.TimeUnit;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.rloc.container.Rloc;
17 * Request source RLOC in the mapping service with it's properties.
19 public class SubscriberRLOC {
23 private Date lastRequestDate;
24 private int subscriberTimeout = DEFAULT_SUBSCRIBER_TIMEOUT;
26 private static final int SUBSCRIBER_TIMEOUT_CONSTANT = 10;
28 //1 day is default Cisco IOS mapping TTL
29 public static final int DEFAULT_SUBSCRIBER_TIMEOUT = (int) TimeUnit.DAYS.toMinutes(1);
34 * @param srcRloc A source RLOC.
35 * @param srcEid A source EID.
36 * @param subscriberTimeout Subscriber timeout in min(s).
38 public SubscriberRLOC(Rloc srcRloc, Eid srcEid, int subscriberTimeout) {
39 this(srcRloc, srcEid, subscriberTimeout, new Date(System.currentTimeMillis()));
45 * @param srcRloc A source RLOC.
46 * @param srcEid A source EID.
47 * @param subscriberTimeout Subscriber timeout in min(s).
48 * @param lastRequestDate Last request date for this subscriber.
50 public SubscriberRLOC(Rloc srcRloc, Eid srcEid, int subscriberTimeout,
51 Date lastRequestDate) {
55 this.lastRequestDate = lastRequestDate;
56 this.subscriberTimeout = subscriberTimeout;
59 public Rloc getSrcRloc() {
63 public void setSrcRloc(Rloc srcRloc) {
67 public Eid getSrcEid() {
71 public void setSrcEid(Eid srcEid) {
75 public Date getLastRequestDate() {
76 return lastRequestDate;
79 public void setLastRequestDate(Date lastRequestDate) {
80 this.lastRequestDate = lastRequestDate;
83 public int getSubscriberTimeout() {
84 return subscriberTimeout;
87 public void setSubscriberTimeout(int subscriberTimeout) {
88 this.subscriberTimeout = subscriberTimeout;
92 * Set Subscriber Timeout from a record's ttl.
94 * @param recordTtl A mapping record's ttl in Minutes. If null, the value is
95 * set to default value of 1440 mins (1 days).
97 public void setSubscriberTimeoutByRecordTtl(Integer recordTtl) {
98 this.subscriberTimeout = recordTtlToSubscriberTime(recordTtl);
101 public static int recordTtlToSubscriberTime(Integer recordTtl) {
102 if (recordTtl != null) {
103 return ( recordTtl + SUBSCRIBER_TIMEOUT_CONSTANT );
105 return DEFAULT_SUBSCRIBER_TIMEOUT;
108 public boolean timedOut() {
109 return TimeUnit.MILLISECONDS
110 .toMinutes(System.currentTimeMillis() - lastRequestDate.getTime()) > subscriberTimeout;
114 public int hashCode() {
115 final int prime = 31;
117 result = prime * result + ((rloc == null) ? 0 : rloc.hashCode());
118 result = prime * result + ((eid == null) ? 0 : eid.hashCode());
123 public boolean equals(Object obj) {
130 if (getClass() != obj.getClass()) {
133 SubscriberRLOC other = (SubscriberRLOC) obj;
134 if (!rloc.equals(other.rloc)) {
141 public String toString() {
142 return "_rloc=" + rloc.toString() + ", _eid=" + eid.toString()
143 + ", last request @ " + lastRequestDate.toString();